Skip to content

Commit

Permalink
release(workspace): v5.2.0 release
Browse files Browse the repository at this point in the history
added collection group support to dbx-firebase components

feat: added firestore collection group support

docs: setup-project docs improvement
  • Loading branch information
ci authored and dereekb committed May 29, 2022
1 parent 865f0cf commit 537baad
Show file tree
Hide file tree
Showing 107 changed files with 1,035 additions and 478 deletions.
3 changes: 2 additions & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ jobs:
- run:
# we grab the relevant tag names before swapping to main
name: "setup env vars for git changes"
command: echo -e "export DEV_TAG_ID=$(git describe --abbrev=0 HEAD^)\nTAG_ID=$(git describe --abbrev=0)" >> $BASH_ENV
command: echo -e "export DEV_TAG_ID=$(git describe --tags --abbrev=0 HEAD^)\nTAG_ID=$(git describe --tags --abbrev=0)" >> $BASH_ENV
- run:
# copy the commit message before we swap branches, or it will include unrelated changes. Move tag to the main branch after making the merge commit into main
name: merge release into main and use the release commit message, move tag from release to main
Expand All @@ -169,6 +169,7 @@ jobs:
- run:
name: delete release branch
command: git push origin --delete release
# Deploys rules and configured projects to Firebase.
deploy-to-firebase:
<<: *defaults
steps:
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion .prettierrc
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@
"tabWidth": 2,
"htmlWhitespaceSensitivity": "ignore",
"endOfLine": "lf",
"printWidth": 400
"printWidth": 500
}
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,16 @@

This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).

# [5.2.0](https://github.com/dereekb/dbx-components/compare/v5.1.0-dev...v5.2.0) (2022-05-29)


### Features

* added collection group support to dbx-firebase components ([9f746c1](https://github.com/dereekb/dbx-components/commit/9f746c12a0e219970dcde12d920f1ef540514ce9))
* added firestore collection group support ([3b4c4cf](https://github.com/dereekb/dbx-components/commit/3b4c4cfa1dd860604c347ade69acdc2fea1063f8))



# [5.1.0](https://github.com/dereekb/dbx-components/compare/v5.0.1-dev...v5.1.0) (2022-05-27)


Expand Down
4 changes: 4 additions & 0 deletions apps/demo-api/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).

# [5.2.0](https://github.com/dereekb/dbx-components/compare/v5.1.0-dev...v5.2.0) (2022-05-29)



# [5.1.0](https://github.com/dereekb/dbx-components/compare/v5.0.1-dev...v5.1.0) (2022-05-27)


Expand Down
44 changes: 25 additions & 19 deletions apps/demo-api/project.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,12 @@
"build-base": {
"executor": "@nrwl/node:webpack",
"outputs": ["{options.outputPath}"],
"dependsOn": [{
"target": "build",
"projects": "dependencies"
}],
"dependsOn": [
{
"target": "build",
"projects": "dependencies"
}
],
"options": {
"outputPath": "dist/apps/demo-api",
"main": "apps/demo-api/src/main.ts",
Expand All @@ -29,10 +31,12 @@
"extractLicenses": false,
"sourceMap": false,
"inspect": false,
"fileReplacements": [{
"replace": "apps/demo-api/src/environments/environment.ts",
"with": "apps/demo-api/src/environments/environment.prod.ts"
}]
"fileReplacements": [
{
"replace": "apps/demo-api/src/environments/environment.ts",
"with": "apps/demo-api/src/environments/environment.prod.ts"
}
]
}
}
},
Expand All @@ -51,7 +55,8 @@
"serve": {
"executor": "@nrwl/workspace:run-commands",
"options": {
"commands": [{
"commands": [
{
"command": "npx nx build-base demo-api --watch"
},
{
Expand All @@ -76,10 +81,7 @@
},
"run-tests": {
"executor": "@nrwl/jest:jest",
"outputs": [
"coverage/apps/demo-api",
"./.reports/jest/demo-api.junit.xml"
],
"outputs": ["coverage/apps/demo-api", "./.reports/jest/demo-api.junit.xml"],
"options": {
"jestConfig": "apps/demo-api/jest.config.ts",
"passWithNoTests": true
Expand All @@ -99,14 +101,18 @@
},
"ci-deploy": {
"executor": "@nrwl/workspace:run-commands",
"dependsOn": [{
"target": "build",
"projects": "self"
}],
"dependsOn": [
{
"target": "build",
"projects": "self"
}
],
"options": {
"commands": [{
"commands": [
{
"command": "npx nx run demo-api:build-base:production"
}, {
},
{
"command": "npx nx make-env demo-api"
},
{
Expand Down
20 changes: 2 additions & 18 deletions apps/demo-api/src/test/fixture.ts
Original file line number Diff line number Diff line change
Expand Up @@ -131,15 +131,7 @@ export class DemoApiGuestbookTestContextFixture<F extends FirebaseAdminFunctionT
export class DemoApiGuestbookTestContextInstance<F extends FirebaseAdminFunctionTestContextInstance = FirebaseAdminFunctionTestContextInstance> extends ModelTestContextInstance<Guestbook, GuestbookDocument, DemoApiFunctionContextFixtureInstance<F>> {}

export const demoGuestbookContextFactory = () =>
modelTestContextFactory<
Guestbook,
GuestbookDocument,
DemoApiGuestbookTestContextParams,
DemoApiFunctionContextFixtureInstance<FirebaseAdminFunctionTestContextInstance>,
DemoApiFunctionContextFixture<FirebaseAdminFunctionTestContextInstance>,
DemoApiGuestbookTestContextInstance<FirebaseAdminFunctionTestContextInstance>,
DemoApiGuestbookTestContextFixture<FirebaseAdminFunctionTestContextInstance>
>({
modelTestContextFactory<Guestbook, GuestbookDocument, DemoApiGuestbookTestContextParams, DemoApiFunctionContextFixtureInstance<FirebaseAdminFunctionTestContextInstance>, DemoApiFunctionContextFixture<FirebaseAdminFunctionTestContextInstance>, DemoApiGuestbookTestContextInstance<FirebaseAdminFunctionTestContextInstance>, DemoApiGuestbookTestContextFixture<FirebaseAdminFunctionTestContextInstance>>({
makeFixture: (f) => new DemoApiGuestbookTestContextFixture(f),
getCollection: (fi) => fi.demoFirestoreCollections.guestbookFirestoreCollection,
makeInstance: (delegate, ref, testInstance) => new DemoApiGuestbookTestContextInstance(delegate, ref, testInstance),
Expand Down Expand Up @@ -169,15 +161,7 @@ export class DemoApiGuestbookEntryTestContextFixture<F extends FirebaseAdminFunc
export class DemoApiGuestbookEntryTestContextInstance<F extends FirebaseAdminFunctionTestContextInstance = FirebaseAdminFunctionTestContextInstance> extends ModelTestContextInstance<GuestbookEntry, GuestbookEntryDocument, DemoApiFunctionContextFixtureInstance<F>> {}

export const demoGuestbookEntryContextFactory = () =>
modelTestContextFactory<
GuestbookEntry,
GuestbookEntryDocument,
DemoApiGuestbookEntryTestContextParams,
DemoApiFunctionContextFixtureInstance<FirebaseAdminFunctionTestContextInstance>,
DemoApiFunctionContextFixture<FirebaseAdminFunctionTestContextInstance>,
DemoApiGuestbookEntryTestContextInstance<FirebaseAdminFunctionTestContextInstance>,
DemoApiGuestbookEntryTestContextFixture<FirebaseAdminFunctionTestContextInstance>
>({
modelTestContextFactory<GuestbookEntry, GuestbookEntryDocument, DemoApiGuestbookEntryTestContextParams, DemoApiFunctionContextFixtureInstance<FirebaseAdminFunctionTestContextInstance>, DemoApiFunctionContextFixture<FirebaseAdminFunctionTestContextInstance>, DemoApiGuestbookEntryTestContextInstance<FirebaseAdminFunctionTestContextInstance>, DemoApiGuestbookEntryTestContextFixture<FirebaseAdminFunctionTestContextInstance>>({
makeFixture: (f) => new DemoApiGuestbookEntryTestContextFixture(f),
getCollection: (fi, params) => fi.demoFirestoreCollections.guestbookEntryCollectionFactory(params.g.document),
makeInstance: (delegate, ref, testInstance) => new DemoApiGuestbookEntryTestContextInstance(delegate, ref, testInstance),
Expand Down
4 changes: 4 additions & 0 deletions apps/demo-e2e/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).

# [5.2.0](https://github.com/dereekb/dbx-components/compare/v5.1.0-dev...v5.2.0) (2022-05-29)



# [5.1.0](https://github.com/dereekb/dbx-components/compare/v5.0.1-dev...v5.1.0) (2022-05-27)


Expand Down
4 changes: 4 additions & 0 deletions apps/demo/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).

# [5.2.0](https://github.com/dereekb/dbx-components/compare/v5.1.0-dev...v5.2.0) (2022-05-29)



# [5.1.0](https://github.com/dereekb/dbx-components/compare/v5.0.1-dev...v5.1.0) (2022-05-27)


Expand Down
9 changes: 9 additions & 0 deletions components/demo-components/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@

This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).

# [5.2.0](https://github.com/dereekb/dbx-components/compare/v5.1.0-dev...v5.2.0) (2022-05-29)


### Features

* added collection group support to dbx-firebase components ([9f746c1](https://github.com/dereekb/dbx-components/commit/9f746c12a0e219970dcde12d920f1ef540514ce9))



# [5.1.0](https://github.com/dereekb/dbx-components/compare/v5.0.1-dev...v5.1.0) (2022-05-27)


Expand Down
2 changes: 1 addition & 1 deletion components/demo-components/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@dereekb/demo-components",
"version": "5.1.0",
"version": "5.2.0",
"peerDependencies": {
"@angular/common": "^13.3.0",
"@angular/core": "^13.3.0"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { Directive } from '@angular/core';
import { DbxFirebaseCollectionStoreDirective, provideDbxFirebaseCollectionStoreDirective } from '@dereekb/dbx-firebase';
import { GuestbookEntry, GuestbookEntryDocument } from '@dereekb/demo-firebase';
import { DbxFirebaseCollectionWithParentStoreDirective, provideDbxFirebaseCollectionWithParentStoreDirective } from '@dereekb/dbx-firebase';
import { Guestbook, GuestbookDocument, GuestbookEntry, GuestbookEntryDocument } from '@dereekb/demo-firebase';
import { GuestbookEntryCollectionStore } from './guestbook.entry.collection.store';

@Directive({
selector: '[demoGuestbookEntryCollection]',
providers: provideDbxFirebaseCollectionStoreDirective(DemoGuestbookEntryCollectionStoreDirective, GuestbookEntryCollectionStore)
providers: provideDbxFirebaseCollectionWithParentStoreDirective(DemoGuestbookEntryCollectionStoreDirective, GuestbookEntryCollectionStore)
})
export class DemoGuestbookEntryCollectionStoreDirective extends DbxFirebaseCollectionStoreDirective<GuestbookEntry, GuestbookEntryDocument, GuestbookEntryCollectionStore> {
export class DemoGuestbookEntryCollectionStoreDirective extends DbxFirebaseCollectionWithParentStoreDirective<GuestbookEntry, Guestbook, GuestbookEntryDocument, GuestbookDocument, GuestbookEntryCollectionStore> {
constructor(store: GuestbookEntryCollectionStore) {
super(store);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { GuestbookDocumentStore } from './guestbook.document.store';
@Injectable()
export class GuestbookEntryCollectionStore extends AbstractDbxFirebaseCollectionWithParentStore<GuestbookEntry, Guestbook, GuestbookEntryDocument, GuestbookDocument> {
constructor(collections: DemoFirestoreCollections, @Optional() parent: GuestbookDocumentStore) {
super({ collectionFactory: collections.guestbookEntryCollectionFactory });
super({ collectionFactory: collections.guestbookEntryCollectionFactory, collectionGroup: collections.guestbookEntryCollectionGroup });
this.setConstraints(publishedGuestbookEntry()); // todo: replace with filter

if (parent) {
Expand Down
9 changes: 9 additions & 0 deletions components/demo-firebase/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@

This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).

# [5.2.0](https://github.com/dereekb/dbx-components/compare/v5.1.0-dev...v5.2.0) (2022-05-29)


### Features

* added firestore collection group support ([3b4c4cf](https://github.com/dereekb/dbx-components/commit/3b4c4cfa1dd860604c347ade69acdc2fea1063f8))



# [5.1.0](https://github.com/dereekb/dbx-components/compare/v5.0.1-dev...v5.1.0) (2022-05-27)


Expand Down
2 changes: 1 addition & 1 deletion components/demo-firebase/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "@dereekb/demo-firebase",
"version": "5.1.0",
"version": "5.2.0",
"type": "commonjs"
}
4 changes: 3 additions & 1 deletion components/demo-firebase/src/lib/collection.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import { FirestoreContext } from '@dereekb/firebase';
import { guestbookEntryFirestoreCollectionFactory, GuestbookEntryFirestoreCollectionFactory, guestbookFirestoreCollection, GuestbookFirestoreCollection, GuestbookFirestoreCollections } from './guestbook';
import { guestbookEntryFirestoreCollectionFactory, GuestbookEntryFirestoreCollectionFactory, guestbookEntryFirestoreCollectionGroup, GuestbookEntryFirestoreCollectionGroup, guestbookFirestoreCollection, GuestbookFirestoreCollection, GuestbookFirestoreCollections } from './guestbook';
import { profileFirestoreCollection, ProfileFirestoreCollection, ProfileFirestoreCollections, profilePrivateDataFirestoreCollectionFactory, ProfilePrivateDataFirestoreCollectionFactory } from './profile/profile';

export abstract class DemoFirestoreCollections implements ProfileFirestoreCollections, GuestbookFirestoreCollections {
abstract readonly guestbookFirestoreCollection: GuestbookFirestoreCollection;
abstract readonly guestbookEntryCollectionGroup: GuestbookEntryFirestoreCollectionGroup;
abstract readonly guestbookEntryCollectionFactory: GuestbookEntryFirestoreCollectionFactory;
abstract readonly profileFirestoreCollection: ProfileFirestoreCollection;
abstract readonly profilePrivateDataCollectionFactory: ProfilePrivateDataFirestoreCollectionFactory;
Expand All @@ -12,6 +13,7 @@ export abstract class DemoFirestoreCollections implements ProfileFirestoreCollec
export function makeDemoFirestoreCollections(firestoreContext: FirestoreContext): DemoFirestoreCollections {
return {
guestbookFirestoreCollection: guestbookFirestoreCollection(firestoreContext),
guestbookEntryCollectionGroup: guestbookEntryFirestoreCollectionGroup(firestoreContext),
guestbookEntryCollectionFactory: guestbookEntryFirestoreCollectionFactory(firestoreContext),
profileFirestoreCollection: profileFirestoreCollection(firestoreContext),
profilePrivateDataCollectionFactory: profilePrivateDataFirestoreCollectionFactory(firestoreContext)
Expand Down
17 changes: 16 additions & 1 deletion components/demo-firebase/src/lib/guestbook/guestbook.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { CollectionReference, AbstractFirestoreDocument, snapshotConverterFunctions, firestoreString, firestoreDate, FirestoreCollection, UserRelatedById, DocumentReferenceRef, FirestoreContext, FirestoreCollectionWithParent, firestoreBoolean, DocumentDataWithId, AbstractFirestoreDocumentWithParent, optionalFirestoreDate } from '@dereekb/firebase';
import { CollectionReference, AbstractFirestoreDocument, snapshotConverterFunctions, firestoreString, firestoreDate, FirestoreCollection, UserRelatedById, DocumentReferenceRef, FirestoreContext, FirestoreCollectionWithParent, firestoreBoolean, DocumentDataWithId, AbstractFirestoreDocumentWithParent, optionalFirestoreDate, DocumentReference, FirestoreCollectionGroup, CollectionGroup } from '@dereekb/firebase';
import { Maybe } from '@dereekb/util';

export interface GuestbookFirestoreCollections {
Expand Down Expand Up @@ -122,3 +122,18 @@ export function guestbookEntryFirestoreCollectionFactory(firestoreContext: Fires
});
};
}

export function guestbookEntryCollectionReference(context: FirestoreContext): CollectionGroup<GuestbookEntry> {
return context.collectionGroup(guestbookCollectionGuestbookEntryCollectionPath).withConverter<GuestbookEntry>(guestbookEntryConverter);
}

export type GuestbookEntryFirestoreCollectionGroup = FirestoreCollectionGroup<GuestbookEntry, GuestbookEntryDocument>;

export function guestbookEntryFirestoreCollectionGroup(firestoreContext: FirestoreContext): GuestbookEntryFirestoreCollectionGroup {
return firestoreContext.firestoreCollectionGroup({
itemsPerPage: 50,
queryLike: guestbookEntryCollectionReference(firestoreContext),
makeDocument: (accessor, documentAccessor) => new GuestbookEntryDocument(undefined, accessor, documentAccessor),
firestoreContext
});
}
18 changes: 11 additions & 7 deletions firebase.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,17 @@
"site": "dereekb-components",
"public": "dist/apps/demo",
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
"headers": [{
"source": "*.[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].+(css|js)",
"headers": [{
"key": "Cache-Control",
"value": "public,max-age=31536000,immutable"
}]
}],
"headers": [
{
"source": "*.[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f].+(css|js)",
"headers": [
{
"key": "Cache-Control",
"value": "public,max-age=31536000,immutable"
}
]
}
],
"rewrites": [
{
"source": "/api/**",
Expand Down
11 changes: 11 additions & 0 deletions firestore.rules
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,17 @@ service cloud.firestore {
}
}

// collection group example
// https://firebase.google.com/docs/firestore/security/rules-query#collection_group_queries_and_security_rules
match /{path=**}/entry/{entry} {

// Can read any entry that is owned or published.
allow get: if resourceIsPublished() || resourceIsOwnedByAuthUserId();

// Can only query if the guestbook entry is published.
allow list: if resourceIsPublished();
}

function resourceIsPublished() {
return (resource.data.published != false);
}
Expand Down
7 changes: 2 additions & 5 deletions make-env.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,11 @@
* node make-env.js
*/
const fs = require('fs');
const {
parse,
stringify
} = require('envfile');
const { parse, stringify } = require('envfile');

// NOTE: If run within nx, remember that nx adds all variables within .env to the environment and, thus, process.env.
// Variables that are within bash take prority.
const templateFilePath = '.env';
const templateFilePath = '.env';
const templateEnv = fs.readFileSync(templateFilePath).toString();
const template = parse(templateEnv);

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@dereekb/dbx-components",
"version": "5.1.0",
"version": "5.2.0",
"license": "MIT",
"scripts": {
"postinstall": "ngcc --properties es2015 browser module main",
Expand Down
4 changes: 4 additions & 0 deletions packages/browser/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).

# [5.2.0](https://github.com/dereekb/dbx-components/compare/v5.1.0-dev...v5.2.0) (2022-05-29)



# [5.1.0](https://github.com/dereekb/dbx-components/compare/v5.0.1-dev...v5.1.0) (2022-05-27)


Expand Down
2 changes: 1 addition & 1 deletion packages/browser/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "@dereekb/browser",
"version": "5.1.0",
"version": "5.2.0",
"type": "commonjs"
}
Loading

0 comments on commit 537baad

Please sign in to comment.