Track web dataconnect generated SDK for CI builds

This commit is contained in:
zouantchaw
2026-02-13 10:29:51 -05:00
parent 8df6ac5569
commit 38c2699fa2
16 changed files with 119279 additions and 0 deletions

4
.gitignore vendored
View File

@@ -184,3 +184,7 @@ krow-workforce-export-latest/
# Data Connect Generated SDKs (Explicit) # Data Connect Generated SDKs (Explicit)
apps/mobile/packages/data_connect/lib/src/dataconnect_generated/ apps/mobile/packages/data_connect/lib/src/dataconnect_generated/
apps/web/src/dataconnect-generated/ apps/web/src/dataconnect-generated/
# Keep web Data Connect SDK in repo so web CI builds don't depend on runtime generation
!apps/web/src/dataconnect-generated/
!apps/web/src/dataconnect-generated/**

View File

@@ -0,0 +1,9 @@
{
"description": "A set of guides for interacting with the generated firebase dataconnect sdk",
"mcpServers": {
"firebase": {
"command": "npx",
"args": ["-y", "firebase-tools@latest", "experimental:mcp"]
}
}
}

View File

@@ -0,0 +1,62 @@
# Setup
If the user hasn't already installed the SDK, always run the user's node package manager of choice, and install the package in the directory ../package.json.
For more information on where the library is located, look at the connector.yaml file.
```ts
import { initializeApp } from 'firebase/app';
initializeApp({
// fill in your project config here using the values from your Firebase project or from the `firebase_get_sdk_config` tool from the Firebase MCP server.
});
```
Then, you can run the SDK as needed.
```ts
import { ... } from '@dataconnect/generated';
```
## React
### Setup
The user should make sure to install the `@tanstack/react-query` package, along with `@tanstack-query-firebase/react` and `firebase`.
Then, they should initialize Firebase:
```ts
import { initializeApp } from 'firebase/app';
initializeApp(firebaseConfig); /* your config here. To generate this, you can use the `firebase_sdk_config` MCP tool */
```
Then, they should add a `QueryClientProvider` to their root of their application.
Here's an example:
```ts
import { initializeApp } from 'firebase/app';
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
const firebaseConfig = {
/* your config here. To generate this, you can use the `firebase_sdk_config` MCP tool */
};
// Initialize Firebase
const app = initializeApp(firebaseConfig);
// Create a TanStack Query client instance
const queryClient = new QueryClient();
function App() {
return (
// Provide the client to your App
<QueryClientProvider client={queryClient}>
<MyApplication />
</QueryClientProvider>
)
}
render(<App />, document.getElementById('root'));
```

View File

@@ -0,0 +1,109 @@
# Basic Usage
Always prioritize using a supported framework over using the generated SDK
directly. Supported frameworks simplify the developer experience and help ensure
best practices are followed.
### React
For each operation, there is a wrapper hook that can be used to call the operation.
Here are all of the hooks that get generated:
```ts
import { useCreateBenefitsData, useUpdateBenefitsData, useDeleteBenefitsData, useListShifts, useGetShiftById, useFilterShifts, useGetShiftsByBusinessId, useGetShiftsByVendorId, useCreateStaffDocument, useUpdateStaffDocument } from '@dataconnect/generated/react';
// The types of these hooks are available in react/index.d.ts
const { data, isPending, isSuccess, isError, error } = useCreateBenefitsData(createBenefitsDataVars);
const { data, isPending, isSuccess, isError, error } = useUpdateBenefitsData(updateBenefitsDataVars);
const { data, isPending, isSuccess, isError, error } = useDeleteBenefitsData(deleteBenefitsDataVars);
const { data, isPending, isSuccess, isError, error } = useListShifts(listShiftsVars);
const { data, isPending, isSuccess, isError, error } = useGetShiftById(getShiftByIdVars);
const { data, isPending, isSuccess, isError, error } = useFilterShifts(filterShiftsVars);
const { data, isPending, isSuccess, isError, error } = useGetShiftsByBusinessId(getShiftsByBusinessIdVars);
const { data, isPending, isSuccess, isError, error } = useGetShiftsByVendorId(getShiftsByVendorIdVars);
const { data, isPending, isSuccess, isError, error } = useCreateStaffDocument(createStaffDocumentVars);
const { data, isPending, isSuccess, isError, error } = useUpdateStaffDocument(updateStaffDocumentVars);
```
Here's an example from a different generated SDK:
```ts
import { useListAllMovies } from '@dataconnect/generated/react';
function MyComponent() {
const { isLoading, data, error } = useListAllMovies();
if(isLoading) {
return <div>Loading...</div>
}
if(error) {
return <div> An Error Occurred: {error} </div>
}
}
// App.tsx
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import MyComponent from './my-component';
function App() {
const queryClient = new QueryClient();
return <QueryClientProvider client={queryClient}>
<MyComponent />
</QueryClientProvider>
}
```
## Advanced Usage
If a user is not using a supported framework, they can use the generated SDK directly.
Here's an example of how to use it with the first 5 operations:
```js
import { createBenefitsData, updateBenefitsData, deleteBenefitsData, listShifts, getShiftById, filterShifts, getShiftsByBusinessId, getShiftsByVendorId, createStaffDocument, updateStaffDocument } from '@dataconnect/generated';
// Operation createBenefitsData: For variables, look at type CreateBenefitsDataVars in ../index.d.ts
const { data } = await CreateBenefitsData(dataConnect, createBenefitsDataVars);
// Operation updateBenefitsData: For variables, look at type UpdateBenefitsDataVars in ../index.d.ts
const { data } = await UpdateBenefitsData(dataConnect, updateBenefitsDataVars);
// Operation deleteBenefitsData: For variables, look at type DeleteBenefitsDataVars in ../index.d.ts
const { data } = await DeleteBenefitsData(dataConnect, deleteBenefitsDataVars);
// Operation listShifts: For variables, look at type ListShiftsVars in ../index.d.ts
const { data } = await ListShifts(dataConnect, listShiftsVars);
// Operation getShiftById: For variables, look at type GetShiftByIdVars in ../index.d.ts
const { data } = await GetShiftById(dataConnect, getShiftByIdVars);
// Operation filterShifts: For variables, look at type FilterShiftsVars in ../index.d.ts
const { data } = await FilterShifts(dataConnect, filterShiftsVars);
// Operation getShiftsByBusinessId: For variables, look at type GetShiftsByBusinessIdVars in ../index.d.ts
const { data } = await GetShiftsByBusinessId(dataConnect, getShiftsByBusinessIdVars);
// Operation getShiftsByVendorId: For variables, look at type GetShiftsByVendorIdVars in ../index.d.ts
const { data } = await GetShiftsByVendorId(dataConnect, getShiftsByVendorIdVars);
// Operation createStaffDocument: For variables, look at type CreateStaffDocumentVars in ../index.d.ts
const { data } = await CreateStaffDocument(dataConnect, createStaffDocumentVars);
// Operation updateStaffDocument: For variables, look at type UpdateStaffDocumentVars in ../index.d.ts
const { data } = await UpdateStaffDocument(dataConnect, updateStaffDocumentVars);
```

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
{"type":"module"}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,32 @@
{
"name": "@dataconnect/generated",
"version": "1.0.0",
"author": "Firebase <firebase-support@google.com> (https://firebase.google.com/)",
"description": "Generated SDK For example",
"license": "Apache-2.0",
"engines": {
"node": " >=18.0"
},
"typings": "index.d.ts",
"module": "esm/index.esm.js",
"main": "index.cjs.js",
"browser": "esm/index.esm.js",
"exports": {
".": {
"types": "./index.d.ts",
"require": "./index.cjs.js",
"default": "./esm/index.esm.js"
},
"./react": {
"types": "./react/index.d.ts",
"require": "./react/index.cjs.js",
"import": "./react/esm/index.esm.js",
"default": "./react/esm/index.esm.js"
},
"./package.json": "./package.json"
},
"peerDependencies": {
"firebase": "^11.3.0 || ^12.0.0",
"@tanstack-query-firebase/react": "^2.0.0"
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"type":"module"}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,17 @@
{
"name": "@dataconnect/generated-react",
"version": "1.0.0",
"author": "Firebase <firebase-support@google.com> (https://firebase.google.com/)",
"description": "Generated SDK For example",
"license": "Apache-2.0",
"engines": {
"node": " >=18.0"
},
"typings": "index.d.ts",
"main": "index.cjs.js",
"module": "esm/index.esm.js",
"browser": "esm/index.esm.js",
"peerDependencies": {
"@tanstack-query-firebase/react": "^2.0.0"
}
}