Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 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
116 changes: 116 additions & 0 deletions .github/workflows/local-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
name: Local CI

on:
workflow_dispatch:

jobs:
quality:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"

- name: Enable Corepack
run: corepack enable

- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT

- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-

- name: Install dependencies
run: pnpm install

- name: Run format check
run: pnpm format

test:
runs-on: ubuntu-latest
timeout-minutes: 30
needs: quality
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
registry-url: "https://registry.npmjs.org"

- name: Enable Corepack
run: corepack enable

- name: Get pnpm store directory
id: pnpm-cache
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT

- name: Setup pnpm cache
uses: actions/cache@v4
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-

- name: Install dependencies
run: pnpm install

- name: Install Java
run: |
sudo apt-get update
sudo apt-get install -y openjdk-17-jdk
java -version

- name: Install Firebase CLI
uses: nick-invision/retry@v3
with:
timeout_minutes: 10
retry_wait_seconds: 60
max_attempts: 3
command: npm i -g firebase-tools@14

# Build packages before testing
- name: Build packages
run: pnpm turbo build

# Verify build outputs
- name: Verify build outputs
run: |
# Check all packages for dist directories
MISSING_BUILDS=""
for PKG_DIR in packages/*; do
if [ -d "$PKG_DIR" ] && [ -f "$PKG_DIR/package.json" ]; then
PKG_NAME=$(basename "$PKG_DIR")
if [ ! -d "$PKG_DIR/dist" ]; then
MISSING_BUILDS="$MISSING_BUILDS $PKG_NAME"
fi
fi
done

if [ -n "$MISSING_BUILDS" ]; then
echo "❌ Build outputs not found for: $MISSING_BUILDS"
exit 1
fi
echo "✅ All build outputs verified"

# Run tests with all emulators (auth, firestore, and data-connect)
- name: Run tests with emulator
run: pnpm test:emulator
10 changes: 8 additions & 2 deletions .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,12 @@ jobs:
- name: Install dependencies
run: pnpm install

- name: Install Java
run: |
sudo apt-get update
sudo apt-get install -y openjdk-17-jdk
java -version

- name: Install Firebase CLI
uses: nick-invision/retry@v3
with:
Expand Down Expand Up @@ -122,13 +128,13 @@ jobs:
fi
fi
done

if [ -n "$MISSING_BUILDS" ]; then
echo "❌ Build outputs not found for: $MISSING_BUILDS"
exit 1
fi
echo "✅ All build outputs verified"

# Run tests with emulator for changed packages
# Run tests with all emulators (auth, firestore, and data-connect)
- name: Run tests with emulator
run: pnpm test:emulator
104 changes: 37 additions & 67 deletions dataconnect-sdk/js/default-connector/esm/index.esm.js
Original file line number Diff line number Diff line change
@@ -1,126 +1,96 @@
import {
executeMutation,
executeQuery,
mutationRef,
queryRef,
validateArgs,
} from "firebase/data-connect";
import { queryRef, executeQuery, mutationRef, executeMutation, validateArgs } from 'firebase/data-connect';

export const connectorConfig = {
connector: "default",
service: "tanstack-query-firebase",
location: "us-central1",
connector: 'default',
service: 'tanstack-query-firebase',
location: 'us-central1'
};

export const createMovieRef = (dcOrVars, vars) => {
const { dc: dcInstance, vars: inputVars } = validateArgs(
connectorConfig,
dcOrVars,
vars,
true,
);
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
dcInstance._useGeneratedSdk();
return mutationRef(dcInstance, "CreateMovie", inputVars);
};
createMovieRef.operationName = "CreateMovie";
return mutationRef(dcInstance, 'CreateMovie', inputVars);
}
createMovieRef.operationName = 'CreateMovie';

export function createMovie(dcOrVars, vars) {
return executeMutation(createMovieRef(dcOrVars, vars));
}

export const upsertMovieRef = (dcOrVars, vars) => {
const { dc: dcInstance, vars: inputVars } = validateArgs(
connectorConfig,
dcOrVars,
vars,
true,
);
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
dcInstance._useGeneratedSdk();
return mutationRef(dcInstance, "UpsertMovie", inputVars);
};
upsertMovieRef.operationName = "UpsertMovie";
return mutationRef(dcInstance, 'UpsertMovie', inputVars);
}
upsertMovieRef.operationName = 'UpsertMovie';

export function upsertMovie(dcOrVars, vars) {
return executeMutation(upsertMovieRef(dcOrVars, vars));
}

export const deleteMovieRef = (dcOrVars, vars) => {
const { dc: dcInstance, vars: inputVars } = validateArgs(
connectorConfig,
dcOrVars,
vars,
true,
);
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
dcInstance._useGeneratedSdk();
return mutationRef(dcInstance, "DeleteMovie", inputVars);
};
deleteMovieRef.operationName = "DeleteMovie";
return mutationRef(dcInstance, 'DeleteMovie', inputVars);
}
deleteMovieRef.operationName = 'DeleteMovie';

export function deleteMovie(dcOrVars, vars) {
return executeMutation(deleteMovieRef(dcOrVars, vars));
}

export const addMetaRef = (dc) => {
const { dc: dcInstance } = validateArgs(connectorConfig, dc, undefined);
const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined);
dcInstance._useGeneratedSdk();
return mutationRef(dcInstance, "AddMeta");
};
addMetaRef.operationName = "AddMeta";
return mutationRef(dcInstance, 'AddMeta');
}
addMetaRef.operationName = 'AddMeta';

export function addMeta(dc) {
return executeMutation(addMetaRef(dc));
}

export const deleteMetaRef = (dcOrVars, vars) => {
const { dc: dcInstance, vars: inputVars } = validateArgs(
connectorConfig,
dcOrVars,
vars,
true,
);
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
dcInstance._useGeneratedSdk();
return mutationRef(dcInstance, "DeleteMeta", inputVars);
};
deleteMetaRef.operationName = "DeleteMeta";
return mutationRef(dcInstance, 'DeleteMeta', inputVars);
}
deleteMetaRef.operationName = 'DeleteMeta';

export function deleteMeta(dcOrVars, vars) {
return executeMutation(deleteMetaRef(dcOrVars, vars));
}

export const listMoviesRef = (dc) => {
const { dc: dcInstance } = validateArgs(connectorConfig, dc, undefined);
const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined);
dcInstance._useGeneratedSdk();
return queryRef(dcInstance, "ListMovies");
};
listMoviesRef.operationName = "ListMovies";
return queryRef(dcInstance, 'ListMovies');
}
listMoviesRef.operationName = 'ListMovies';

export function listMovies(dc) {
return executeQuery(listMoviesRef(dc));
}

export const getMovieByIdRef = (dcOrVars, vars) => {
const { dc: dcInstance, vars: inputVars } = validateArgs(
connectorConfig,
dcOrVars,
vars,
true,
);
const { dc: dcInstance, vars: inputVars} = validateArgs(connectorConfig, dcOrVars, vars, true);
dcInstance._useGeneratedSdk();
return queryRef(dcInstance, "GetMovieById", inputVars);
};
getMovieByIdRef.operationName = "GetMovieById";
return queryRef(dcInstance, 'GetMovieById', inputVars);
}
getMovieByIdRef.operationName = 'GetMovieById';

export function getMovieById(dcOrVars, vars) {
return executeQuery(getMovieByIdRef(dcOrVars, vars));
}

export const getMetaRef = (dc) => {
const { dc: dcInstance } = validateArgs(connectorConfig, dc, undefined);
const { dc: dcInstance} = validateArgs(connectorConfig, dc, undefined);
dcInstance._useGeneratedSdk();
return queryRef(dcInstance, "GetMeta");
};
getMetaRef.operationName = "GetMeta";
return queryRef(dcInstance, 'GetMeta');
}
getMetaRef.operationName = 'GetMeta';

export function getMeta(dc) {
return executeQuery(getMetaRef(dc));
}

4 changes: 1 addition & 3 deletions dataconnect-sdk/js/default-connector/esm/package.json
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
{
"type": "module"
}
{"type":"module"}
Loading