react-native-insider 8.0.1 → 8.0.2
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/.orbit-output/config/MASTER.md +129 -0
- package/.orbit-output/config/architecture/API_DOCS.md +342 -0
- package/.orbit-output/config/architecture/ARCHITECTURE.md +209 -0
- package/.orbit-output/config/architecture/CODE-CATALOG.md +172 -0
- package/.orbit-output/config/architecture/project.yaml +138 -0
- package/.orbit-output/config/automation/AUTOMATION-SETUP.md +50 -0
- package/.orbit-output/config/enforcement/ENFORCEMENT-RULES.md +41 -0
- package/.orbit-output/config/enforcement/validate.sh +49 -0
- package/.orbit-output/skills/custom/academy-doc-generator.md +598 -0
- package/LICENSE +4 -2
- package/README.md +5 -5
- package/RNInsider.podspec +2 -2
- package/android/build.gradle +1 -1
- package/docs/app-cards/app-cards_new.md +569 -0
- package/package.json +3 -2
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# CODE-CATALOG.md
|
|
2
|
+
|
|
3
|
+
> Generated by Orbit Init | 2026-04-16 | react-native-insider v8.0.0
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
React Native bridge SDK wrapping native Insider iOS/Android SDKs. Single npm package with JS facade, TypeScript declarations, and native bridge modules. Now includes the **App Cards** module (Promise + callback hybrid API) and **identifier-scoped Message Center**.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Entry Points
|
|
12
|
+
|
|
13
|
+
| File | Type | Description |
|
|
14
|
+
|------|------|-------------|
|
|
15
|
+
| `index.js` | Main entry | `RNInsider` static class — primary SDK facade. Re-exports `InsiderAppCardsError`, `InsiderAppCardsErrorCode` |
|
|
16
|
+
| `index.d.ts` | Type declarations | TypeScript module declaration for `react-native-insider` |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## JS Source Modules (`src/`)
|
|
21
|
+
|
|
22
|
+
### Classes
|
|
23
|
+
|
|
24
|
+
| Class | File | Pattern | Description |
|
|
25
|
+
|-------|------|---------|-------------|
|
|
26
|
+
| `RNInsider` | `index.js` | Static facade | All-static class wrapping NativeModules.RNInsider. Entry point for SDK initialization, events, products, pages, recommendations, content optimizer, push, geofence, GDPR, message center, app cards |
|
|
27
|
+
| `RNInsiderUser` | `src/InsiderUser.js` | Builder (fluent) | User profile management. Singleton instance returned by `getCurrentUser()`. Setters for demographics, marketing optins, custom attributes, login/logout, `logoutResettingInsiderID` |
|
|
28
|
+
| `RNInsiderProduct` | `src/InsiderProduct.js` | Builder (fluent) | Product model with `requiredFields`, `optionalFields`, `customParameters`. Constructed via `createNewProduct()`, enriched via chainable setters |
|
|
29
|
+
| `RNInsiderEvent` | `src/InsiderEvent.js` | Builder (fluent) | Event builder. Created via `tagEvent(name)`, parameters added via typed setters, dispatched via `.build()` |
|
|
30
|
+
| `RNInsiderIdentifier` | `src/InsiderIdentifier.js` | Builder (fluent) | Identity builder for login. Accumulates email, phone, userID, custom identifiers into an object |
|
|
31
|
+
| `RNInsiderAppCards` | `src/InsiderAppCards.js` | Frozen singleton object | App cards module exposing `getCampaigns/markAsRead/markAsUnread/delete/view/click/clickButton`. Each method supports both Promise and completion-callback modes via `Util.resolveWithCallback` |
|
|
32
|
+
| `InsiderAppCard` | `src/InsiderAppCard.js` | Domain model | Rich app card with private fields (#) — id, type, isRead, images, content, buttons, action. Provides instance methods `markAsRead/markAsUnread/delete/view/click` |
|
|
33
|
+
| `InsiderAppCardButton` | `src/InsiderAppCard.js` | Domain model | Button on an app card. Holds id, appCardId, text, action, raw data. `click()` delegates to `InsiderAppCards.clickButton(this)` |
|
|
34
|
+
| `InsiderAppCardContent` | `src/InsiderAppCard.js` | Domain model | Title + description value object |
|
|
35
|
+
| `InsiderAppCardImage` | `src/InsiderAppCard.js` | Domain model | Image URL value object |
|
|
36
|
+
| `InsiderAppCardAction` | `src/InsiderAppCard.js` | Polymorphic base | `fromData()` factory dispatches on `data.type` (`deep_link`, `feedback`, `open_settings`) |
|
|
37
|
+
| `InsiderAppCardDeeplinkAction` | `src/InsiderAppCard.js` | Domain model | Deep link action — `url`, `deeplinkType`, `json`, `keysAndValues` |
|
|
38
|
+
| `InsiderAppCardFeedbackAction` | `src/InsiderAppCard.js` | Domain model | Feedback action marker |
|
|
39
|
+
| `InsiderAppCardOpenSettingsAction` | `src/InsiderAppCard.js` | Domain model | Open-settings action marker |
|
|
40
|
+
| `InsiderAppCardsCampaignResponse` | `src/InsiderAppCard.js` | Domain model | Wraps `items` from native into `appCards: InsiderAppCard[]` |
|
|
41
|
+
| `InsiderAppCardsError` | `src/InsiderAppCardsError.js` | Typed Error subclass | Extends `Error` with structured `code`. Static `from(error)` parses native bridge errors `{code, message}` or strings |
|
|
42
|
+
|
|
43
|
+
### Enums / Constants
|
|
44
|
+
|
|
45
|
+
| Module | File | Values |
|
|
46
|
+
|--------|------|--------|
|
|
47
|
+
| `InsiderGender` | `src/InsiderGender.js` | `Male=0, Female=1, Other=2` |
|
|
48
|
+
| `InsiderCallbackType` | `src/InsiderCallbackType.js` | `NOTIFICATION_OPEN=0, INAPP_BUTTON_CLICK=1, TEMP_STORE_PURCHASE=2, TEMP_STORE_ADDED_TO_CART=3, TEMP_STORE_CUSTOM_ACTION=4, INAPP_SEEN=5, SESSION_STARTED=6` |
|
|
49
|
+
| `ContentOptimizerDataType` | `src/ContentOptimizerDataType.js` | `Content=0, Element=1` |
|
|
50
|
+
| `CloseButtonPosition` | `src/CloseButtonPosition.js` | `LEFT, RIGHT, NONE` |
|
|
51
|
+
| `InsiderAppCardsErrorCode` | `src/InsiderAppCardsError.js` | `UNKNOWN, SDK_NOT_INITIALIZED, INVALID_PARAMETER, NETWORK_ERROR, SERVER_ERROR, PARSE_ERROR` (string values) |
|
|
52
|
+
|
|
53
|
+
### Utilities (`src/Util.js`)
|
|
54
|
+
|
|
55
|
+
| Function | Description |
|
|
56
|
+
|----------|-------------|
|
|
57
|
+
| `shouldNotProceed()` | Returns true if NativeModules.RNInsider is null/undefined |
|
|
58
|
+
| `generateJSONErrorString(error)` | Formats error as `[JavaScript Error] {error}` |
|
|
59
|
+
| `checkParameters(params)` | Validates array of `{type, value}` descriptors against typeof |
|
|
60
|
+
| `showParameterWarningLog(fnName, params)` | Emits `console.warn` with function name and invalid parameter details |
|
|
61
|
+
| `resolveWithCallback(promise, completion)` | **NEW.** Bridges Promise and callback APIs. If `completion` is a function, invokes `completion(err, value)`; otherwise returns the Promise |
|
|
62
|
+
| `isPlainObject(value)` | Checks if value is a plain JS object (not null, array, Date, etc.) |
|
|
63
|
+
| `detectType(value)` | Returns type string: boolean, date, numeric_array, string_array, integer, double, string, unknown |
|
|
64
|
+
| `parseObjectWithTypes(parameters)` | Converts plain object to typed array `[{key, type, value}]` for native bridge. Filters unknown types. Converts Dates to epoch millis |
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Native iOS (`ios/RNInsider/`)
|
|
69
|
+
|
|
70
|
+
| File | Class | Role |
|
|
71
|
+
|------|-------|------|
|
|
72
|
+
| `RNInsider.h/.m` | `RNInsider : NSObject <RCTBridgeModule>` | Main bridge module. Exports all RCT_EXPORT_METHOD bridge methods (init, user, product, event, content optimizer, push, recommendations, message center, app cards). Delegates events to RNNotificationHandler singleton. Runs on main queue |
|
|
73
|
+
| `RNNotificationHandler.h/.m` | `RNNotificationHandler : RCTEventEmitter <RCTBridgeModule>` | Singleton event emitter. Declares supportedEvents, sends native events to JS via `sendEventWithName:body:` |
|
|
74
|
+
| `RNUtils.h/.m` | `RNUtils` | Static utility methods: `parseProductFromRequiredFields:`, `parseEventFromEventName:`, `parseCustomParameters:`. Converts bridge data to native Insider SDK objects |
|
|
75
|
+
|
|
76
|
+
### iOS Dependencies (RNInsider.podspec)
|
|
77
|
+
|
|
78
|
+
| Pod | Version | Purpose |
|
|
79
|
+
|-----|---------|---------|
|
|
80
|
+
| InsiderMobile | 15.0.0 | Core Insider iOS SDK |
|
|
81
|
+
| InsiderGeofence | 1.2.4 | Geofencing support |
|
|
82
|
+
| InsiderHybrid | 1.7.6 | Hybrid app bridge utilities |
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Native Android (`android/src/main/java/com/useinsider/react/`)
|
|
87
|
+
|
|
88
|
+
| File | Class | Role |
|
|
89
|
+
|------|-------|------|
|
|
90
|
+
| `RNInsiderModule.java` | `RNInsiderModule extends ReactContextBaseJavaModule` | Main bridge module. All `@ReactMethod` annotated methods (~80 total). Emits events via `RCTDeviceEventEmitter`. Handles init on main looper. Now includes app card bridges and `getMessageCenterDataWithIdentifiers`, `logoutResettingInsiderID` |
|
|
91
|
+
| `RNInsiderPackage.java` | `RNInsiderPackage implements ReactPackage` | Package registration for React Native module system |
|
|
92
|
+
| `RNUtils.java` | `RNUtils` | Static utilities: `parseProduct()`, `parseEvent()`, `parseCustomParameters()`, JSON↔ReadableMap converters. Converts ReadableMap/ReadableArray to native Insider SDK objects |
|
|
93
|
+
|
|
94
|
+
### Android Dependencies (build.gradle)
|
|
95
|
+
|
|
96
|
+
| Dependency | Version | Purpose |
|
|
97
|
+
|------------|---------|---------|
|
|
98
|
+
| com.useinsider:insider | 16.0.1 | Core Insider Android SDK |
|
|
99
|
+
| com.useinsider:insiderhybrid | 1.3.4 | Hybrid app bridge |
|
|
100
|
+
| firebase-messaging | 24.0.0 | FCM push notifications |
|
|
101
|
+
| play-services-location | 21.3.0 | Geofencing |
|
|
102
|
+
| play-review | 2.0.1 | Native app review dialog |
|
|
103
|
+
| security-crypto | 1.1.0-alpha06 | Encrypted storage |
|
|
104
|
+
| androidx.lifecycle:lifecycle-process | 2.8.3 | App lifecycle |
|
|
105
|
+
| androidx.work:work-runtime | 2.9.1 | Background work |
|
|
106
|
+
| androidx.legacy:legacy-support-v4 | 1.0.0 | Legacy support |
|
|
107
|
+
| huawei hms:push | 6.13.0.300 | Huawei push notifications |
|
|
108
|
+
| huawei hms:location | 6.16.0.302 | Huawei geofencing |
|
|
109
|
+
| huawei hms:ads-identifier | 3.4.62.300 | Huawei ad identifier |
|
|
110
|
+
|
|
111
|
+
Build: Android Gradle Plugin 8.4.2, compileSdk 36, minSdk 24, namespace `com.useinsider.react`
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Tests (`__tests__/` and `src/__tests__/`)
|
|
116
|
+
|
|
117
|
+
| File | Scope | Key Coverage |
|
|
118
|
+
|------|-------|--------------|
|
|
119
|
+
| `__tests__/Insider.test.js` | Custom parameters flow | itemPurchased, itemAddedToCart, cartCleared, visitHomePage, visitListingPage, visitProductDetailPage, visitCartPage, itemAddedToWishlist, etc. Tests all 7 types + unknown filtering |
|
|
120
|
+
| `__tests__/Util.test.js` | Top-level Util usage | parseObjectWithTypes, detectType, isPlainObject — edge cases, type detection, null handling |
|
|
121
|
+
| `__tests__/getMessageCenterData.test.js` | Message center | UTC timezone validation, platform response handling (iOS unwrap vs Android direct), date validation, epoch string format |
|
|
122
|
+
| `__tests__/getMessageCenterDataWithIdentifiers.test.js` | Message center w/ identifiers | NEW. Validates identifier-scoped variant of message center fetch |
|
|
123
|
+
| `__tests__/setInternalBrowserCloseButtonPosition.test.js` | Browser close button | CloseButtonPosition enum values, parameter validation, platform-specific behavior |
|
|
124
|
+
| `src/__tests__/Util.test.js` | Util module | NEW. Direct Util coverage (resolveWithCallback, type detection) |
|
|
125
|
+
| `src/__tests__/InsiderAppCard.test.js` | Domain model | NEW. App card construction, action factory dispatch (deep_link/feedback/open_settings), private field access |
|
|
126
|
+
| `src/__tests__/InsiderAppCards.test.js` | App cards API | NEW. getCampaigns/markAsRead/markAsUnread/delete/view/click/clickButton — Promise + callback duality, error wrapping, parameter validation |
|
|
127
|
+
| `src/__tests__/InsiderAppCardsError.test.js` | Typed error | NEW. Error code mapping, `from()` factory parsing structured/string errors |
|
|
128
|
+
|
|
129
|
+
### Test Mock (`__mocks__/react-native.js`)
|
|
130
|
+
|
|
131
|
+
Global mock providing: `NativeModules.RNInsider` (all methods as jest.fn() including app card bridges), `NativeEventEmitter` (listener management), `Platform` (default iOS).
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Example App (`example/`)
|
|
136
|
+
|
|
137
|
+
| File | Description |
|
|
138
|
+
|------|-------------|
|
|
139
|
+
| `App.tsx` | Demo app with screens: InitScreen (SDK init), UserScreen, ProductScreen, EventScreen |
|
|
140
|
+
| `example/android/` | Android project with google-services.json, Kotlin MainActivity/MainApplication |
|
|
141
|
+
| `example/ios/` | iOS project with Swift AppDelegate, Notification Service/Content extensions |
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## CI/CD (`.github/workflows/`)
|
|
146
|
+
|
|
147
|
+
| Workflow | Trigger | Purpose |
|
|
148
|
+
|----------|---------|---------|
|
|
149
|
+
| `check-pull-request.yml` | PR events | Title format validation (MOB-xxxxx), auto-labeling, assignee |
|
|
150
|
+
| `create-release.yml` | Manual dispatch | Creates release branch, JIRA integration, GPG-signed commits |
|
|
151
|
+
| `publish-release.yml` | PR merged to master | npm publish, GPG-signed tags, dual-track (main + -nh variant), GitHub Deployments |
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Internal Specs (`docs/`)
|
|
156
|
+
|
|
157
|
+
| Path | Purpose |
|
|
158
|
+
|------|---------|
|
|
159
|
+
| `docs/app-cards/` | Internal feature specs for App Cards |
|
|
160
|
+
| `docs/message-center/` | Internal feature specs for Message Center |
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## Configuration
|
|
165
|
+
|
|
166
|
+
| File | Purpose |
|
|
167
|
+
|------|---------|
|
|
168
|
+
| `package.json` | npm package definition (v8.0.0), Jest config, version source of truth |
|
|
169
|
+
| `RNInsider.podspec` | CocoaPods spec (reads version from package.json) |
|
|
170
|
+
| `android/build.gradle` | Android library build config, native SDK dependencies |
|
|
171
|
+
| `babel.config.js` | Babel with @react-native/babel-preset |
|
|
172
|
+
| `.npmignore` | Excludes example/, __tests__, .github, .claude, coverage from npm package |
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Orbit Project Configuration
|
|
2
|
+
# Generated: 2026-04-16
|
|
3
|
+
# Workflow version: 3.11
|
|
4
|
+
|
|
5
|
+
project:
|
|
6
|
+
name: react-native-insider
|
|
7
|
+
version: "8.0.0"
|
|
8
|
+
type: library
|
|
9
|
+
architecture: single-service
|
|
10
|
+
description: "React Native bridge SDK for Insider marketing platform — wraps native iOS/Android Insider SDKs and adds the App Cards module"
|
|
11
|
+
|
|
12
|
+
languages:
|
|
13
|
+
main:
|
|
14
|
+
- name: JavaScript
|
|
15
|
+
version: ES6+ (with private fields)
|
|
16
|
+
locations: ["./", "src/", "__tests__/", "__mocks__/"]
|
|
17
|
+
file_count: 30
|
|
18
|
+
- name: TypeScript
|
|
19
|
+
version: declarations
|
|
20
|
+
locations: ["./", "src/", "example/"]
|
|
21
|
+
file_count: 11
|
|
22
|
+
- name: "Objective-C"
|
|
23
|
+
locations: ["ios/RNInsider/", "example/ios/"]
|
|
24
|
+
file_count: 10
|
|
25
|
+
- name: Java
|
|
26
|
+
locations: ["android/src/main/java/com/useinsider/react/"]
|
|
27
|
+
file_count: 3
|
|
28
|
+
- name: Kotlin
|
|
29
|
+
locations: ["example/android/"]
|
|
30
|
+
file_count: 2
|
|
31
|
+
- name: Swift
|
|
32
|
+
locations: ["example/ios/InsiderExample/"]
|
|
33
|
+
file_count: 1
|
|
34
|
+
other:
|
|
35
|
+
- name: YAML
|
|
36
|
+
purpose: configuration
|
|
37
|
+
- name: JSON
|
|
38
|
+
purpose: configuration
|
|
39
|
+
- name: Gradle
|
|
40
|
+
purpose: build
|
|
41
|
+
- name: Ruby
|
|
42
|
+
purpose: podspec
|
|
43
|
+
|
|
44
|
+
frameworks:
|
|
45
|
+
main:
|
|
46
|
+
- name: React Native
|
|
47
|
+
version: "0.83.0"
|
|
48
|
+
category: cross-platform-bridge
|
|
49
|
+
- name: React
|
|
50
|
+
version: "19.2.0"
|
|
51
|
+
category: react
|
|
52
|
+
- name: InsiderMobile
|
|
53
|
+
version: "15.0.0"
|
|
54
|
+
category: ios-native-sdk
|
|
55
|
+
- name: InsiderGeofence
|
|
56
|
+
version: "1.2.4"
|
|
57
|
+
category: ios-geofence
|
|
58
|
+
- name: InsiderHybrid
|
|
59
|
+
version: "1.7.6"
|
|
60
|
+
category: ios-hybrid
|
|
61
|
+
- name: Insider Android SDK
|
|
62
|
+
version: "16.0.1"
|
|
63
|
+
category: android-native-sdk
|
|
64
|
+
- name: insiderhybrid (Android)
|
|
65
|
+
version: "1.3.4"
|
|
66
|
+
category: android-hybrid
|
|
67
|
+
support:
|
|
68
|
+
- name: Firebase Messaging
|
|
69
|
+
version: "24.0.0"
|
|
70
|
+
category: push-notifications
|
|
71
|
+
- name: "Huawei HMS Push"
|
|
72
|
+
version: "6.13.0.300"
|
|
73
|
+
category: push-notifications
|
|
74
|
+
- name: "Huawei HMS Location"
|
|
75
|
+
version: "6.16.0.302"
|
|
76
|
+
category: location
|
|
77
|
+
- name: play-services-location
|
|
78
|
+
version: "21.3.0"
|
|
79
|
+
category: location
|
|
80
|
+
- name: play-review
|
|
81
|
+
version: "2.0.1"
|
|
82
|
+
category: review
|
|
83
|
+
- name: androidx.security:security-crypto
|
|
84
|
+
version: "1.1.0-alpha06"
|
|
85
|
+
category: security
|
|
86
|
+
- name: Jest
|
|
87
|
+
version: "29.7.0"
|
|
88
|
+
category: testing
|
|
89
|
+
- name: babel-jest
|
|
90
|
+
version: "30.2.0"
|
|
91
|
+
category: testing
|
|
92
|
+
- name: Android Gradle Plugin
|
|
93
|
+
version: "8.4.2"
|
|
94
|
+
category: build
|
|
95
|
+
|
|
96
|
+
services:
|
|
97
|
+
- name: react-native-insider
|
|
98
|
+
path: "."
|
|
99
|
+
type: library
|
|
100
|
+
primary_language: JavaScript
|
|
101
|
+
frameworks:
|
|
102
|
+
- React Native
|
|
103
|
+
- InsiderMobile (iOS)
|
|
104
|
+
- Insider (Android)
|
|
105
|
+
modules:
|
|
106
|
+
- InsiderUser (fluent builder)
|
|
107
|
+
- InsiderProduct (fluent builder)
|
|
108
|
+
- InsiderEvent (fluent builder)
|
|
109
|
+
- InsiderIdentifier (fluent builder)
|
|
110
|
+
- InsiderAppCards (frozen singleton; Promise + callback)
|
|
111
|
+
- InsiderAppCard (domain model with private fields)
|
|
112
|
+
- InsiderAppCardsError (typed Error subclass)
|
|
113
|
+
- Util (validation, type detection, resolveWithCallback)
|
|
114
|
+
description: "React Native bridge SDK wrapping native Insider iOS/Android SDKs. v8.0.0 adds the App Cards module and identifier-scoped Message Center."
|
|
115
|
+
description_source: code-analysis
|
|
116
|
+
verified: true
|
|
117
|
+
|
|
118
|
+
output:
|
|
119
|
+
architecture_file: ".orbit-output/config/architecture/ARCHITECTURE.md"
|
|
120
|
+
code_catalog: ".orbit-output/config/architecture/CODE-CATALOG.md"
|
|
121
|
+
api_docs: ".orbit-output/config/architecture/API_DOCS.md"
|
|
122
|
+
config_file: ".orbit-output/config/architecture/project.yaml"
|
|
123
|
+
|
|
124
|
+
analysis:
|
|
125
|
+
mode: FULL_ANALYSIS
|
|
126
|
+
date: "2026-04-16"
|
|
127
|
+
workflow_version: "3.11"
|
|
128
|
+
zoe_configured: false
|
|
129
|
+
notable_changes_since_last:
|
|
130
|
+
- "Bumped package version 7.1.0 → 8.0.0"
|
|
131
|
+
- "Bumped iOS InsiderMobile 14.3.1 → 15.0.0"
|
|
132
|
+
- "Bumped Android Insider SDK 15.3.0 → 16.0.1"
|
|
133
|
+
- "Added App Cards module (InsiderAppCards, InsiderAppCard, InsiderAppCardsError)"
|
|
134
|
+
- "Added getMessageCenterDataWithIdentifiers method"
|
|
135
|
+
- "Added RNInsiderUser.logoutResettingInsiderID method"
|
|
136
|
+
- "Added Util.resolveWithCallback helper for Promise/callback bridging"
|
|
137
|
+
- "Added per-module test suite under src/__tests__/"
|
|
138
|
+
- "Added docs/app-cards/ and docs/message-center/ internal specs"
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Automation Setup for react-native-insider
|
|
2
|
+
|
|
3
|
+
> Generated: 2026-04-16 | Orbit Init v3.11
|
|
4
|
+
|
|
5
|
+
## Active Tool
|
|
6
|
+
|
|
7
|
+
**Claude Code** (detected from CLAUDE.md + .claude/ directory)
|
|
8
|
+
|
|
9
|
+
## Automation Status
|
|
10
|
+
|
|
11
|
+
| Feature | Status |
|
|
12
|
+
|---------|--------|
|
|
13
|
+
| .orbit-output/ context | Configured via CLAUDE.md references |
|
|
14
|
+
| Architecture docs | Updated for v8.0.0 (ARCHITECTURE.md, CODE-CATALOG.md, API_DOCS.md) |
|
|
15
|
+
| MASTER.md | Updated as single source of truth |
|
|
16
|
+
| project.yaml | Updated with new module list and SDK versions |
|
|
17
|
+
| Settings | .claude/settings.json + settings.local.json (preserved) |
|
|
18
|
+
| Skills | .claude/skills/ (academy-doc-generator preserved) |
|
|
19
|
+
| Rules | .claude/rules/ (00-ENFORCE-FIRST, code-style, orbit-enforcement preserved) |
|
|
20
|
+
|
|
21
|
+
## Context Files
|
|
22
|
+
|
|
23
|
+
Claude Code loads these for project awareness:
|
|
24
|
+
- `.orbit-output/config/MASTER.md` — Quick reference
|
|
25
|
+
- `.orbit-output/config/architecture/ARCHITECTURE.md` — Architecture overview
|
|
26
|
+
- `.orbit-output/config/architecture/CODE-CATALOG.md` — Code catalog
|
|
27
|
+
- `.orbit-output/config/architecture/API_DOCS.md` — API reference
|
|
28
|
+
|
|
29
|
+
## Notable v8.0.0 Updates Captured
|
|
30
|
+
|
|
31
|
+
- App Cards module (InsiderAppCards, InsiderAppCard, InsiderAppCardsError) cataloged
|
|
32
|
+
- `getMessageCenterDataWithIdentifiers` documented
|
|
33
|
+
- `RNInsiderUser.logoutResettingInsiderID` documented
|
|
34
|
+
- `Util.resolveWithCallback` Promise/callback bridge helper documented
|
|
35
|
+
- iOS InsiderMobile bumped 14.3.1 → 15.0.0
|
|
36
|
+
- Android Insider SDK bumped 15.3.0 → 16.0.1
|
|
37
|
+
|
|
38
|
+
## Keeping Docs Updated
|
|
39
|
+
|
|
40
|
+
Run `/orbit:sync` after significant codebase changes to regenerate architecture docs.
|
|
41
|
+
|
|
42
|
+
Run `/orbit:init` for a full re-analysis when:
|
|
43
|
+
- Major refactoring occurs
|
|
44
|
+
- New native modules are added
|
|
45
|
+
- Native SDK versions are bumped
|
|
46
|
+
- New platform-specific features are added
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
*Auto-generated by Orbit Init v3.11 | 2026-04-16*
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# ORBIT ENFORCEMENT RULES
|
|
2
|
+
|
|
3
|
+
> Generated: 2026-04-06 | Orbit Init v3.11
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
This enforcement system ensures AI tools maintain consistency between code and architecture documentation.
|
|
8
|
+
|
|
9
|
+
## Enforcement Layers
|
|
10
|
+
|
|
11
|
+
### Layer 0: Session Start
|
|
12
|
+
- `.claude/rules/00-ENFORCE-FIRST.md` — Loads architecture on every Claude Code session
|
|
13
|
+
- Forces reading MASTER.md before first code change
|
|
14
|
+
|
|
15
|
+
### Layer 1: AI Tool Rules
|
|
16
|
+
- `.claude/rules/orbit-enforcement.md` — Enforces pattern following and doc updates
|
|
17
|
+
- Before changes: read relevant docs
|
|
18
|
+
- After changes: update affected docs
|
|
19
|
+
|
|
20
|
+
### Layer 2: Pattern Enforcement
|
|
21
|
+
- All code must follow patterns documented in MASTER.md
|
|
22
|
+
- Parameter validation, fluent builders, product serialization patterns
|
|
23
|
+
|
|
24
|
+
## Required Updates by Change Type
|
|
25
|
+
|
|
26
|
+
| Change Type | Files to Update |
|
|
27
|
+
|-------------|----------------|
|
|
28
|
+
| New public method on RNInsider | API_DOCS.md, CODE-CATALOG.md, index.d.ts |
|
|
29
|
+
| New class/module | CODE-CATALOG.md, ARCHITECTURE.md |
|
|
30
|
+
| New native bridge method | API_DOCS.md, corresponding .m/.java file |
|
|
31
|
+
| New enum/constant | CODE-CATALOG.md |
|
|
32
|
+
| Architecture change | ARCHITECTURE.md, MASTER.md |
|
|
33
|
+
| Dependency version bump | CODE-CATALOG.md, MASTER.md |
|
|
34
|
+
|
|
35
|
+
## Keeping Docs Current
|
|
36
|
+
|
|
37
|
+
Run `/orbit:sync` after significant changes to regenerate docs automatically.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
*Auto-generated by Orbit Init v3.11 | 2026-04-06*
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Orbit Enforcement Validation Script
|
|
3
|
+
# Checks that all required orbit files exist
|
|
4
|
+
|
|
5
|
+
ERRORS=0
|
|
6
|
+
|
|
7
|
+
check_file() {
|
|
8
|
+
if [ -f "$1" ]; then
|
|
9
|
+
echo " ✓ $1"
|
|
10
|
+
else
|
|
11
|
+
echo " ✗ $1 (MISSING)"
|
|
12
|
+
ERRORS=$((ERRORS + 1))
|
|
13
|
+
fi
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
echo "═══════════════════════════════════════════════"
|
|
17
|
+
echo " ORBIT ENFORCEMENT VALIDATION"
|
|
18
|
+
echo "═══════════════════════════════════════════════"
|
|
19
|
+
echo ""
|
|
20
|
+
|
|
21
|
+
echo "Architecture Documentation:"
|
|
22
|
+
check_file ".orbit-output/config/MASTER.md"
|
|
23
|
+
check_file ".orbit-output/config/architecture/ARCHITECTURE.md"
|
|
24
|
+
check_file ".orbit-output/config/architecture/CODE-CATALOG.md"
|
|
25
|
+
check_file ".orbit-output/config/architecture/API_DOCS.md"
|
|
26
|
+
check_file ".orbit-output/config/architecture/project.yaml"
|
|
27
|
+
echo ""
|
|
28
|
+
|
|
29
|
+
echo "Root Config:"
|
|
30
|
+
check_file "CLAUDE.md"
|
|
31
|
+
echo ""
|
|
32
|
+
|
|
33
|
+
echo "Enforcement Rules:"
|
|
34
|
+
check_file ".claude/rules/00-ENFORCE-FIRST.md"
|
|
35
|
+
check_file ".claude/rules/orbit-enforcement.md"
|
|
36
|
+
check_file ".orbit-output/config/enforcement/ENFORCEMENT-RULES.md"
|
|
37
|
+
echo ""
|
|
38
|
+
|
|
39
|
+
echo "═══════════════════════════════════════════════"
|
|
40
|
+
if [ $ERRORS -eq 0 ]; then
|
|
41
|
+
echo " VALIDATION PASSED: All files intact"
|
|
42
|
+
echo "═══════════════════════════════════════════════"
|
|
43
|
+
exit 0
|
|
44
|
+
else
|
|
45
|
+
echo " VALIDATION FAILED: $ERRORS issue(s) found"
|
|
46
|
+
echo " Run /orbit:init to repair"
|
|
47
|
+
echo "═══════════════════════════════════════════════"
|
|
48
|
+
exit 1
|
|
49
|
+
fi
|