Track web dataconnect generated SDK for CI builds
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -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/**
|
||||||
|
|||||||
9
apps/web/src/dataconnect-generated/.guides/config.json
Normal file
9
apps/web/src/dataconnect-generated/.guides/config.json
Normal 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"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
62
apps/web/src/dataconnect-generated/.guides/setup.md
Normal file
62
apps/web/src/dataconnect-generated/.guides/setup.md
Normal 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'));
|
||||||
|
```
|
||||||
|
|
||||||
109
apps/web/src/dataconnect-generated/.guides/usage.md
Normal file
109
apps/web/src/dataconnect-generated/.guides/usage.md
Normal 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);
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
49269
apps/web/src/dataconnect-generated/README.md
Normal file
49269
apps/web/src/dataconnect-generated/README.md
Normal file
File diff suppressed because it is too large
Load Diff
4493
apps/web/src/dataconnect-generated/esm/index.esm.js
Normal file
4493
apps/web/src/dataconnect-generated/esm/index.esm.js
Normal file
File diff suppressed because it is too large
Load Diff
1
apps/web/src/dataconnect-generated/esm/package.json
Normal file
1
apps/web/src/dataconnect-generated/esm/package.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"type":"module"}
|
||||||
4916
apps/web/src/dataconnect-generated/index.cjs.js
Normal file
4916
apps/web/src/dataconnect-generated/index.cjs.js
Normal file
File diff suppressed because it is too large
Load Diff
14108
apps/web/src/dataconnect-generated/index.d.ts
vendored
Normal file
14108
apps/web/src/dataconnect-generated/index.d.ts
vendored
Normal file
File diff suppressed because it is too large
Load Diff
32
apps/web/src/dataconnect-generated/package.json
Normal file
32
apps/web/src/dataconnect-generated/package.json
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
40061
apps/web/src/dataconnect-generated/react/README.md
Normal file
40061
apps/web/src/dataconnect-generated/react/README.md
Normal file
File diff suppressed because it is too large
Load Diff
2536
apps/web/src/dataconnect-generated/react/esm/index.esm.js
Normal file
2536
apps/web/src/dataconnect-generated/react/esm/index.esm.js
Normal file
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
|||||||
|
{"type":"module"}
|
||||||
2536
apps/web/src/dataconnect-generated/react/index.cjs.js
Normal file
2536
apps/web/src/dataconnect-generated/react/index.cjs.js
Normal file
File diff suppressed because one or more lines are too long
1125
apps/web/src/dataconnect-generated/react/index.d.ts
vendored
Normal file
1125
apps/web/src/dataconnect-generated/react/index.d.ts
vendored
Normal file
File diff suppressed because one or more lines are too long
17
apps/web/src/dataconnect-generated/react/package.json
Normal file
17
apps/web/src/dataconnect-generated/react/package.json
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user