Skip to content
Merged
Show file tree
Hide file tree
Changes from 29 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
29ec210
fix: update Mend SAST configExternalURL to use HTTPS raw GitHub URL
tsdamas Mar 25, 2026
9152df4
fix(browser): disable eslint failure for certain empty object rules
tsdamas Mar 25, 2026
4f7ac81
fix(storage): cast logger through unknown in test to satisfy LoggerIn…
tsdamas Mar 26, 2026
14033c2
fix(sample-app): replace global with globalThis in HomeScreen for Typ…
tsdamas Mar 26, 2026
520f7af
fix(sample-app): force legacy eslint config for lint
tsdamas Mar 26, 2026
bc20af3
Fix workspace type resolution for rn-types during package typecheck
tsdamas Mar 26, 2026
b7cf720
Remove docs from root
tsdamas Mar 26, 2026
e0bb041
feat(logger): remove configureLogger from public API
tsdamas Mar 27, 2026
38e4c5c
fix(types: update types doc to remove configurelogger
tsdamas Mar 27, 2026
5d93262
fix(storage): remove nativeLogger field
tsdamas Mar 27, 2026
7b414dd
fix(oidc): remove nativeLogger:NativeLoggerHandle field
tsdamas Mar 27, 2026
5739d15
fix(journey): remove nativeLogger:NativeLoggerHandle field
tsdamas Mar 27, 2026
a3bee63
fix(dvc-profile): remove nativeLogger:NativeLoggerHandle field
tsdamas Mar 27, 2026
d5438a5
fix(dvc-id): remove configureLogger from docs
tsdamas Mar 27, 2026
0976c9b
fix(browser): remove nativeHandle:NativeLoggerHandle field
tsdamas Mar 27, 2026
9deb2e9
fix(tsconfig): point rn-types to built declarations in tsconfig.build…
tsdamas Mar 27, 2026
69b590a
fix(integration): remove configureLogger from logger integration tests
tsdamas Mar 27, 2026
54294c5
fix(jest): exclude lib/ from haste map in all package jest configs
tsdamas Mar 27, 2026
6f7f01a
fix(sample-app): remove logger configure step from sample app
tsdamas Mar 30, 2026
aa9e043
chore(browser): align logger integration with new contract pattern
tsdamas Mar 30, 2026
2dd82b6
chore(device-profile): align logger integration with new contract pat…
tsdamas Mar 30, 2026
6009c36
chore(browser): update native side to new logger contract
tsdamas Mar 30, 2026
a60a3f2
chore(logger): remove remaining mend findings
tsdamas Mar 30, 2026
d67c9bc
feat(ios): migrate RNPackagesTests scheme from PingSampleApp to PingT…
tsdamas Mar 30, 2026
4eb32e7
fix(PingTestRunner): add paths and scenarios to tsconfig to fix CI ty…
tsdamas Mar 30, 2026
d42605f
fix(turbo): add ^build to typecheck dependsOn to ensure workspace pac…
tsdamas Mar 30, 2026
707e6d2
fix(storage): fix prettier formatting in index.tsx and storage.types.ts
tsdamas Mar 30, 2026
57f30c1
fix(ci): remove DerivedData restore-keys to prevent Clang module mtim…
tsdamas Mar 31, 2026
ac7c9ea
fix(ci): fix module cache reset step ordering and path resolution
tsdamas Mar 31, 2026
ad7cdc8
chore(types): remove tracking generated declarations in src
tsdamas Apr 6, 2026
220b1af
chore(SDKS-4801): addressing review comments
tsdamas Apr 8, 2026
a653495
chore(SDKS-4801): add missing semicolon to device-id integration test
tsdamas Apr 8, 2026
61259b3
fix(logger): correct prettier formatting in logger test
tsdamas Apr 9, 2026
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
23 changes: 16 additions & 7 deletions .github/workflows/build-and-test-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@ on:
env:
# Define environment variables for the workflow.
# These can be overridden by the caller if needed.
WORKSPACE: PingSampleApp/ios/PingSampleApp.xcworkspace
WORKSPACE: PingTestRunner/ios/PingTestRunner.xcworkspace
SCHEME: RNPackagesTests
CONFIGURATION: Debug
DESTINATION: platform=iOS Simulator,name=iPhone 16e,OS=latest
DERIVED_DATA_PATH: DerivedData
XCODE_VERSION: '26.1.1'
RUBY_VERSION: '2.6.10'
BUNDLE_GEMFILE: ${{ github.workspace }}/PingSampleApp/Gemfile
IOS_DIRECTORY: PingSampleApp/ios
BUNDLE_GEMFILE: ${{ github.workspace }}/PingTestRunner/Gemfile
IOS_DIRECTORY: PingTestRunner/ios
jobs:
build-and-test-ios:
runs-on: macos-15-large
Expand Down Expand Up @@ -66,14 +66,14 @@ jobs:
${{ runner.os }}-pods-

# Cache DerivedData
# Note: restore-keys is intentionally omitted. A partial/stale DerivedData cache
# causes Clang module mtime mismatch errors when SDK framework files on the runner
# are newer than the cached .pcm files. Only an exact cache hit is safe to restore.
- name: Cache DerivedData
uses: actions/cache@v3
with:
path: ${{ env.DERIVED_DATA_PATH }}
key: ${{ runner.os }}-xcode-${{ env.XCODE_VERSION }}-deriveddata-${{ hashFiles('PingSampleApp/ios/Podfile.lock', 'PingSampleApp/ios/PingSampleApp.xcodeproj/project.pbxproj', 'PingSampleApp/ios/PingSampleApp.xcodeproj/xcshareddata/xcschemes/RNPackagesTests.xcscheme', 'packages/*/*.podspec', 'packages/*/ios/**/*.swift', 'packages/*/ios/**/*.{m,mm,h,cpp}') }}
restore-keys: |
${{ runner.os }}-xcode-${{ env.XCODE_VERSION }}-deriveddata-

key: ${{ runner.os }}-xcode-${{ env.XCODE_VERSION }}-deriveddata-${{ hashFiles('PingTestRunner/ios/Podfile.lock', 'PingTestRunner/ios/PingTestRunner.xcodeproj/project.pbxproj', 'PingTestRunner/ios/PingTestRunner.xcodeproj/xcshareddata/xcschemes/RNPackagesTests.xcscheme', 'packages/*/*.podspec', 'packages/*/ios/**/*.swift', 'packages/*/ios/**/*.{m,mm,h,cpp}') }}
# Setup Node.js environment and install dependencies.
- name: Setup project dependencies
uses: ./.github/actions/setup-proj
Expand All @@ -87,6 +87,15 @@ jobs:
- name: Select Xcode version
run: sudo xcode-select -s /Applications/Xcode_${{ env.XCODE_VERSION }}.app && /usr/bin/xcodebuild -version

# Clang module caches are sensitive to SDK header mtimes on the runner image.
# This must run AFTER Xcode is selected so the active SDK is finalised.
# Keep the broader DerivedData cache for build products, but always force module
# and SDK stat caches to be rebuilt to avoid stale .pcm restore failures.
- name: Reset Xcode module caches
run: |
rm -rf "${{ github.workspace }}/${{ env.DERIVED_DATA_PATH }}/ModuleCache.noindex"
rm -rf "${{ github.workspace }}/${{ env.DERIVED_DATA_PATH }}/SDKStatCaches.noindex"

# Install xcresultparser to .xcresult files generated by xcodebuild for test reporting.
- name: Install xcresultparser
run: |
Expand Down
11 changes: 11 additions & 0 deletions .prettierrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/*
* Copyright (c) 2026 Ping Identity Corporation. All rights reserved.
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/

module.exports = {
singleQuote: true,
trailingComma: 'all',
}
1 change: 0 additions & 1 deletion .whitesource
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
},
"scanSettingsSAST": {
"enableScan": true,
"configExternalURL": "./.mendsastcli-config.json",
"scanPullRequests": true,
"incrementalScan": true,
"findingSuppressions": "enabled",
Expand Down
Binary file modified .yarn/install-state.gz
Binary file not shown.
19 changes: 19 additions & 0 deletions PingSampleApp/.eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,23 @@
module.exports = {
root: true,
extends: '@react-native',
rules: {
'no-void': ['warn', { allowAsStatement: true }],
},
overrides: [
{
files: ['*.ts', '*.tsx'],
rules: {
'@typescript-eslint/no-unused-vars': [
'error',
{
varsIgnorePattern: '^_',
argsIgnorePattern: '^_',
caughtErrorsIgnorePattern: '^_',
destructuredArrayIgnorePattern: '^_',
},
],
},
},
],
};
65 changes: 33 additions & 32 deletions PingSampleApp/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import {
sampleAppClientProfiles,
} from './src/clients';
import { configureBrowser } from '@ping-identity/rn-browser';
import { configureLogger, logger } from '@ping-identity/rn-logger';
import { logger } from '@ping-identity/rn-logger';
import MaterialIcon from 'react-native-vector-icons/MaterialIcons';
import { colors } from './src/styles/colors';

Expand Down Expand Up @@ -66,14 +66,15 @@ export default function App() {
const browserLogger = useMemo(() => logger({ level: 'debug' }), []);
const [initError, setInitError] = useState<string | null>(null);
const [selectedProfileKey, setSelectedProfileKey] = useState<string>(
DEFAULT_SAMPLE_APP_CLIENT_PROFILE_KEY
DEFAULT_SAMPLE_APP_CLIENT_PROFILE_KEY,
);

const selectedProfile = useMemo(
() =>
sampleAppClientProfiles.find((profile) => profile.key === selectedProfileKey) ??
sampleAppClientProfiles[0],
[selectedProfileKey]
sampleAppClientProfiles.find(
profile => profile.key === selectedProfileKey,
) ?? sampleAppClientProfiles[0],
[selectedProfileKey],
);

useEffect(() => {
Expand All @@ -85,7 +86,8 @@ export default function App() {
style: [textDefaults.style, { fontFamily: 'Montserrat-Regular' }],
};

const textInputComponent = TextInput as unknown as ComponentWithDefaultStyle;
const textInputComponent =
TextInput as unknown as ComponentWithDefaultStyle;
const textInputDefaults = textInputComponent.defaultProps ?? {};
textInputComponent.defaultProps = {
...textInputDefaults,
Expand All @@ -107,35 +109,37 @@ export default function App() {
console.error('Failed to initialize Journey client', error);
if (isMounted) {
const message =
error instanceof Error ? error.message : 'Failed to initialize Journey client.';
error instanceof Error
? error.message
: 'Failed to initialize Journey client.';
setInitError(message);
}
}
};

void initializeJourneyClient();

// ( TODO: REVISIT )Global SDK logger baseline. Tune this when debugging integration issues.
configureLogger({ level: 'info' });

// Browser defaults used by OIDC/browser flows in this sample app.
configureBrowser({
android: {
customTabs: {
showTitle: false,
urlBarHidingEnabled: true,
colorScheme: 'dark',
},
authTabs: {
ephemeral: true,
colorScheme: 'dark',
toolbarColor: colors.browserToolbar,
navigationBarColor: colors.browserNavigationBar,
configureBrowser(
{
android: {
customTabs: {
showTitle: false,
urlBarHidingEnabled: true,
colorScheme: 'dark',
},
authTabs: {
ephemeral: true,
colorScheme: 'dark',
toolbarColor: colors.browserToolbar,
navigationBarColor: colors.browserNavigationBar,
},
},
},
}, {
logger: browserLogger,
});
{
logger: browserLogger,
},
);

return () => {
isMounted = false;
Expand Down Expand Up @@ -164,7 +168,7 @@ export default function App() {
name="Home"
options={{ title: 'PingIdentity Demo', headerShown: false }}
>
{(props) => (
{props => (
<HomeScreen
{...props}
selectedConfigName={selectedProfile.name}
Expand All @@ -175,7 +179,7 @@ export default function App() {
name="Configuration"
options={{ title: 'Configuration' }}
>
{(props) => (
{props => (
<ConfigurationScreen
{...props}
profiles={sampleAppClientProfiles}
Expand Down Expand Up @@ -214,11 +218,8 @@ export default function App() {
component={LoggerScreen}
options={{ title: 'Logger Demo' }}
/>
<Stack.Screen
name="Oidc"
options={{ title: 'OIDC Demo' }}
>
{(props) => (
<Stack.Screen name="Oidc" options={{ title: 'OIDC Demo' }}>
{props => (
<OidcScreen
{...props}
clientConfig={selectedProfile.oidcClientConfig}
Expand Down
Loading
Loading