Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion .sdk-parse-ignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,13 @@ packages/supabase_common/
packages/supabase_typegen/

# The examples are standalone demo apps, not part of the published SDK, so their
# public classes are not capability-matrix symbols.
# public classes are not capability-matrix symbols. Each package also ships its
# own example app, which the extractor treats as a package of its own because it
# has a pubspec.yaml.
examples/
packages/*/example/

# version.dart is rewritten wholesale by the release tooling
# (`echo "const version = '$version';" > $d/lib/src/version.dart`), so it cannot
# carry an @internal annotation.
packages/*/lib/src/version.dart
2 changes: 2 additions & 0 deletions packages/gotrue/lib/src/broadcast_stub.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
// coverage:ignore-file
import 'package:gotrue/src/types/types.dart';
import 'package:meta/meta.dart';

/// Stub implementation of [BroadcastChannel] for platforms that don't support
/// it.
@internal
BroadcastChannel getBroadcastChannel(String broadcastKey) {
throw UnimplementedError();
}
2 changes: 2 additions & 0 deletions packages/gotrue/lib/src/broadcast_web.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@ import 'dart:js_interop';

import 'package:gotrue/src/types/types.dart';
import 'package:logging/logging.dart';
import 'package:meta/meta.dart';
import 'package:web/web.dart' as web;

final _log = Logger('supabase.auth');

@internal
BroadcastChannel getBroadcastChannel(String broadcastKey) {
final broadcast = web.BroadcastChannel(broadcastKey);
final controller = StreamController<Map<String, dynamic>>();
Expand Down
2 changes: 2 additions & 0 deletions packages/postgrest/lib/src/constants.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import 'package:postgrest/src/version.dart';
import 'package:supabase_common/supabase_common.dart';
import 'package:meta/meta.dart';

@internal
final defaultHeaders = {
'X-Client-Info': buildClientInfoHeader('postgrest-dart', version),
};
2 changes: 1 addition & 1 deletion packages/realtime_client/lib/realtime_client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@ export 'src/constants.dart'
export 'src/realtime_channel.dart';
export 'src/realtime_client.dart';
export 'src/realtime_presence.dart';
export 'src/transformers.dart' hide getEnrichedPayload, getPayloadRecords;
export 'src/transformers.dart' show PostgresColumn, PostgresType;
export 'src/types.dart' hide ChannelFilter, RealtimeListenType;
1 change: 1 addition & 0 deletions packages/realtime_client/lib/src/retry_timer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ typedef TimerCalculation = int Function(int tries);

// Need to limit doubling to avoid overflow, this limit gives 1 million times
// the first delay
@internal
const maxShift = 20;

/// Creates a timer that accepts a `timerCalc` function to perform
Expand Down
14 changes: 14 additions & 0 deletions packages/realtime_client/lib/src/transformers.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
// https://raw.githubusercontent.com/epgsql/epgsql/devel/LICENSE

import 'dart:convert';
import 'package:meta/meta.dart';

import 'package:collection/collection.dart' show IterableExtension;

Expand Down Expand Up @@ -68,6 +69,7 @@ class PostgresColumn {
/// )
/// => { 'first_name': 'Paul', 'age': 33 }
/// ```
@internal
Map<String, dynamic> convertChangeData(
List<Map<String, dynamic>> columns,
Map<String, dynamic> record, {
Expand Down Expand Up @@ -113,6 +115,7 @@ Map<String, dynamic> convertChangeData(
/// )
/// => "33"
/// ```
@internal
dynamic convertColumn(
String columnName,
List<PostgresColumn> columns,
Expand Down Expand Up @@ -142,6 +145,7 @@ dynamic convertColumn(
/// @example convertCell('_int4', '{1,2,3,4}')
/// => [1,2,3,4]
/// ```
@internal
dynamic convertCell(String type, dynamic value) {
if (value == null) {
return null;
Expand Down Expand Up @@ -193,10 +197,12 @@ dynamic convertCell(String type, dynamic value) {
}
}

@internal
dynamic noop(dynamic value) {
return value;
}

@internal
bool? toBoolean(dynamic value) {
switch (value) {
case 't':
Expand All @@ -211,6 +217,7 @@ bool? toBoolean(dynamic value) {
}
}

@internal
double? toDouble(dynamic value) {
if (value is double) {
return value;
Expand All @@ -221,6 +228,7 @@ double? toDouble(dynamic value) {
return double.tryParse(value.toString());
}

@internal
int? toInt(dynamic value) {
if (value is int) {
return value;
Expand All @@ -231,6 +239,7 @@ int? toInt(dynamic value) {
return int.tryParse(value.toString());
}

@internal
dynamic toJson(dynamic value) {
if (value is String) {
try {
Expand All @@ -251,6 +260,7 @@ dynamic toJson(dynamic value) {
/// @example toArray([1,2,3,4], 'int4')
/// //=> [1,2,3,4]
/// ```
@internal
dynamic toArray(dynamic value, String type) {
if (value is! String) {
return value;
Expand Down Expand Up @@ -287,13 +297,15 @@ dynamic toArray(dynamic value, String type) {
/// @example toTimestampString('2019-09-10 00:00:00')
/// => '2019-09-10T00:00:00'
/// ```
@internal
String? toTimestampString(String? value) {
if (value != null) {
return value.replaceAll(' ', 'T');
}
return null;
}

@internal
Map<String, dynamic> getEnrichedPayload(Map<String, dynamic> payload) {
final postgresChanges = payload['data'] ?? payload;
final schema = postgresChanges['schema'];
Expand All @@ -318,6 +330,7 @@ Map<String, dynamic> getEnrichedPayload(Map<String, dynamic> payload) {
};
}

@internal
Map<String, Map<String, dynamic>> getPayloadRecords(
Map<String, dynamic> payload,
) {
Expand Down Expand Up @@ -345,6 +358,7 @@ Map<String, Map<String, dynamic>> getPayloadRecords(
}

/// Converts a WebSocket URL to an HTTP URL.
@internal
String httpEndpointURL(String socketUrl) {
var url = socketUrl;

Expand Down
1 change: 1 addition & 0 deletions packages/realtime_client/lib/src/types.dart
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ enum PostgresChangeEvent {
};
}

@internal
class ChannelFilter {
/// For [RealtimeListenType.postgresChanges] it's one of: `INSERT`, `UPDATE`,
/// `DELETE`
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:web_socket_channel/io.dart';
import 'package:web_socket_channel/web_socket_channel.dart';
import 'package:meta/meta.dart';

/// Interval for the native WebSocket to send protocol-level ping frames.
///
Expand All @@ -10,6 +11,7 @@ import 'package:web_socket_channel/web_socket_channel.dart';
/// app-level heartbeat cadence of 25 seconds.
const _defaultWebSocketPingInterval = Duration(seconds: 25);

@internal
WebSocketChannel createWebSocketClient(
String url,
Map<String, String> headers, {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import 'package:web_socket_channel/web_socket_channel.dart';
import 'package:meta/meta.dart';

@internal
WebSocketChannel createWebSocketClient(
String url,
Map<String, String> headers,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import 'package:web_socket_channel/html.dart';
import 'package:web_socket_channel/web_socket_channel.dart';
import 'package:meta/meta.dart';

@internal
WebSocketChannel createWebSocketClient(
String url,
Map<String, String> headers,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import 'package:supabase_flutter/supabase_flutter.dart';
import 'package:meta/meta.dart';

@internal
void markClientToDispose(SupabaseClient client) {}

@internal
void disposePreviousClient() {}
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@ import 'dart:async';
import 'dart:js_interop';

import 'package:supabase_flutter/supabase_flutter.dart';
import 'package:meta/meta.dart';

@JS()
@internal
external JSFunction? supabaseFlutterClientToDispose;

/// Store a function to properly dispose the previous [SupabaseClient] in
Expand All @@ -16,6 +18,7 @@ external JSFunction? supabaseFlutterClientToDispose;
/// connections to be still running and causes unexpected behavior like type
/// errors and the fact that the events of the old connection may still be
/// logged.
@internal
void markClientToDispose(SupabaseClient client) {
void dispose() {
unawaited(
Expand All @@ -34,6 +37,7 @@ void markClientToDispose(SupabaseClient client) {
///
/// This is done by calling the function stored by
/// [markClientToDispose] from the js context
@internal
void disposePreviousClient() {
if (supabaseFlutterClientToDispose != null) {
supabaseFlutterClientToDispose!.callAsFunction();
Expand Down
6 changes: 6 additions & 0 deletions packages/supabase_flutter/lib/src/local_storage_stub.dart
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
// coverage:ignore-file
import 'package:meta/meta.dart';

@internal
bool hasAccessToken(String _) => throw UnimplementedError();

@internal
// ignore: avoid-unnecessary-nullable-return-type
String? accessToken(String _) => throw UnimplementedError();

@internal
void removePersistedSession(String _) => throw UnimplementedError();

@internal
void persistSession(String _, String persistSessionString) =>
throw UnimplementedError();
7 changes: 6 additions & 1 deletion packages/supabase_flutter/lib/src/local_storage_web.dart
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
import 'package:web/web.dart';
import 'package:meta/meta.dart';

final _localStorage = window.localStorage;

@internal
bool hasAccessToken(String persistSessionKey) =>
_localStorage.getItem(persistSessionKey) != null;

@internal
String? accessToken(String persistSessionKey) =>
_localStorage.getItem(persistSessionKey);

@internal
void removePersistedSession(String persistSessionKey) =>
_localStorage.removeItem(persistSessionKey);

void persistSession(String persistSessionKey, persistSessionString) =>
@internal
void persistSession(String persistSessionKey, String persistSessionString) =>
_localStorage.setItem(persistSessionKey, persistSessionString);
Comment thread
Copilot marked this conversation as resolved.
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:passkeys_platform_interface/types/types.dart';
import 'package:meta/meta.dart';

/// Converts the WebAuthn registration options returned by the Supabase passkey
/// API into a [RegisterRequestType] understood by the `passkeys` plugin.
Expand All @@ -9,6 +10,7 @@ import 'package:passkeys_platform_interface/types/types.dart';
/// are stripping base64url padding from the challenge and credential ids (the
/// plugin rejects padded values) and ensuring every excluded credential carries
/// a `transports` list (the plugin requires it).
@internal
RegisterRequestType passkeyRegisterRequestFromOptions(
Map<String, dynamic> options,
) {
Expand All @@ -35,6 +37,7 @@ RegisterRequestType passkeyRegisterRequestFromOptions(
/// format, matching [AuthenticateRequestType.fromJson]. As with registration,
/// the challenge and credential ids are stripped of base64url padding and every
/// allowed credential is given a `transports` list.
@internal
AuthenticateRequestType passkeyAuthenticateRequestFromOptions(
Map<String, dynamic> options,
) {
Expand Down
Loading
Loading