diff --git a/angular.json b/angular.json index 6e6fb485..45c8e256 100644 --- a/angular.json +++ b/angular.json @@ -34,7 +34,7 @@ }, "apps/involvemint/src/manifest.webmanifest" ], - "styles": ["apps/involvemint/src/styles.scss"], + "styles": ["./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", "apps/involvemint/src/styles.scss"], "scripts": [], "serviceWorker": true, "ngswConfigPath": "apps/involvemint/ngsw-config.json", diff --git a/apps/involvemint/src/index.html b/apps/involvemint/src/index.html index 8fdafc36..0161fa9f 100644 --- a/apps/involvemint/src/index.html +++ b/apps/involvemint/src/index.html @@ -14,8 +14,11 @@ - - + + + + + diff --git a/apps/involvemint/src/styles.scss b/apps/involvemint/src/styles.scss index 466c2f43..db0ca5ef 100644 --- a/apps/involvemint/src/styles.scss +++ b/apps/involvemint/src/styles.scss @@ -1 +1,5 @@ -@import '@involvemint/scss/_index.scss'; +@import '@involvemint/scss/_index.scss'; + + +html, body { height: 100%; } +body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; } diff --git a/apps/migrate/src/app/app.service.ts b/apps/migrate/src/app/app.service.ts index bcd23036..61a942a6 100644 --- a/apps/migrate/src/app/app.service.ts +++ b/apps/migrate/src/app/app.service.ts @@ -210,7 +210,10 @@ export class AppService { requests: [], sendingTransactions: [], sendingVouchers: [], - view: null, + view: null, + tags: ep.tags, + spendingOptions: ep.spendingOptions + }; }) .filter((u) => !!u) @@ -777,6 +780,7 @@ export class AppService { address: address, listingStatus: e.listed ? 'public' : 'private', price: e.price, + }; }).filter((u) => !!u) ) diff --git a/libs/client/ep/shell/src/lib/storefront/storefront.component.html b/libs/client/ep/shell/src/lib/storefront/storefront.component.html index f1701444..17375d11 100644 --- a/libs/client/ep/shell/src/lib/storefront/storefront.component.html +++ b/libs/client/ep/shell/src/lib/storefront/storefront.component.html @@ -48,6 +48,40 @@ + + + + + {{ tag }} + + + + +
+
+ {{ tag }} + +
+
+ + + + + In-Person + Virtual + Both + + + + + + + + + + + +
Storefront Images:
diff --git a/libs/client/ep/shell/src/lib/storefront/storefront.component.scss b/libs/client/ep/shell/src/lib/storefront/storefront.component.scss index 05ee9b69..016a96f6 100644 --- a/libs/client/ep/shell/src/lib/storefront/storefront.component.scss +++ b/libs/client/ep/shell/src/lib/storefront/storefront.component.scss @@ -14,4 +14,20 @@ padding: 0.5em; color: black; } + + +} +.tags { + display:flex ; + gap: 10px ; +} +.tag { + background-color: var(--ion-color-primary) ; + padding: 4px 8px ; + border-radius: 8px ; + color:white ; + display:flex ; + align-items: center; + gap: 2px ; + } diff --git a/libs/client/ep/shell/src/lib/storefront/storefront.component.ts b/libs/client/ep/shell/src/lib/storefront/storefront.component.ts index 8a4d3812..da3498b7 100644 --- a/libs/client/ep/shell/src/lib/storefront/storefront.component.ts +++ b/libs/client/ep/shell/src/lib/storefront/storefront.component.ts @@ -19,7 +19,9 @@ import { } from '@involvemint/shared/domain'; import { tapOnce, UnArray } from '@involvemint/shared/util'; import { FormControl, FormGroup } from '@ngneat/reactive-forms'; -import { filter, skip, switchMap, tap, take } from 'rxjs/operators'; +import { filter, skip, switchMap, tap ,take } from 'rxjs/operators'; +import { FormBuilder} from '@angular/forms'; + type Profile = NonNullable['exchangePartner']>; @@ -37,13 +39,19 @@ interface State { changeDetection: ChangeDetectionStrategy.OnPush, }) export class StorefrontComponent extends StatefulComponent implements OnInit { + @ViewChild('tabs') tabs!: ImTabsComponent; + availableTags: string[] = ['Essentials', 'Arts & Entertainment', 'Professional Services', 'Trades', 'Rentals', 'Farming/Land', 'Food & Food Services', 'Health & Wellness', 'Transportation', 'Home Services', 'Youth', 'Seniors', 'Education/Training', 'Retail', 'Media & Print', 'Free']; + + readonly storeFrontForm = new FormGroup({ listStoreFront: new FormControl(defaultProjectListingStatus, (e) => Validators.required(e) ), description: new FormControl('', [Validators.maxLength(ImConfig.maxDescriptionLength)]), + tags: new FormControl([]), + spendingOptions: new FormControl('') }); readonly listingOptions: StorefrontListingStatus[] = ['public', 'private', 'unlisted']; @@ -55,12 +63,14 @@ export class StorefrontComponent extends StatefulComponent implements OnI private readonly status: StatusService, private readonly imagesViewer: ImImagesViewerModalService, private readonly route: RouteService, - private readonly activatedRoute: ActivatedRoute + private readonly activatedRoute: ActivatedRoute, ) { super({ activeTabIndex: 0, profile: null, deepLink: null, savingState: 'saved' }); + } ngOnInit(): void { + this.activatedRoute.queryParams.pipe().subscribe(async ({ activeTab }) => { if (!activeTab) { return; @@ -91,9 +101,13 @@ export class StorefrontComponent extends StatefulComponent implements OnI if (!exchangePartner) { return; } + console.log(exchangePartner) this.storeFrontForm.patchValue({ listStoreFront: exchangePartner.listStoreFront, description: exchangePartner.description, + tags: exchangePartner.tags, + spendingOptions: exchangePartner.spendingOptions + }); }), tap((exchangePartner) => { @@ -107,10 +121,16 @@ export class StorefrontComponent extends StatefulComponent implements OnI switchMap(() => this.storeFrontForm.valueChanges), skip(1), tap((form) => { + console.log(this.storeFrontForm.get('tags')?.value) + console.log(this.storeFrontForm.get('description')?.value) + console.log(form.tags) + console.log(form.description) this.updateState({ savingState: 'saving' }); this.user.epProfile.dispatchers.editEpProfile({ listStoreFront: form.listStoreFront, description: form.description, + tags: form.tags, + spendingOptions: form.spendingOptions }); }), @@ -150,6 +170,7 @@ export class StorefrontComponent extends StatefulComponent implements OnI }); } + async viewImages(paths: string[], index: number): Promise { await this.imagesViewer.open({ imagesFilePaths: paths, slideIndex: index }); } @@ -158,7 +179,7 @@ export class StorefrontComponent extends StatefulComponent implements OnI let files: File[] | undefined; try { files = parseMultipleFiles(event); - } catch (error) { + } catch (error:any) { this.status.presentAlert({ title: 'Error', description: error.message }); } @@ -167,10 +188,32 @@ export class StorefrontComponent extends StatefulComponent implements OnI this.user.epProfile.dispatchers.uploadEpImages(files); } + + deleteImage(imagesFilePathsIndex: number): void { this.user.epProfile.dispatchers.deleteEpImage(imagesFilePathsIndex); } + addTag(tag: string) { + console.log("we are hereeeeee") + const currentTags = this.storeFrontForm.get('tags')?.value || []; + if (tag && !currentTags.includes(tag)) { + this.storeFrontForm.get('tags')?.patchValue([...currentTags, tag]); + console.log('Updated Tags:', this.storeFrontForm.get('tags')?.value); + } + } + + onTagSelected(event: any) { + const selectedTag = event.detail.value; + this.addTag(selectedTag); + } + + removeTag(index: number): void { + const currentTags = [...this.storeFrontForm.get('tags')?.value]; // Make a copy of the array + currentTags.splice(index, 1); + this.storeFrontForm.get('tags')?.patchValue([...currentTags]); +} + makeCoverPhoto( ep: UnArray['exchangePartner'], imagesFilePathsIndex: number diff --git a/libs/client/ep/shell/src/lib/storefront/storefront.module.ts b/libs/client/ep/shell/src/lib/storefront/storefront.module.ts index 452bee4e..edcb4d21 100644 --- a/libs/client/ep/shell/src/lib/storefront/storefront.module.ts +++ b/libs/client/ep/shell/src/lib/storefront/storefront.module.ts @@ -14,6 +14,7 @@ import { ImRoutes } from '@involvemint/shared/domain'; import { IonicModule } from '@ionic/angular'; import { AutosizeModule } from 'ngx-autosize'; import { StorefrontComponent } from './storefront.component'; +import {FormsModule} from '@angular/forms'; @NgModule({ imports: [ @@ -29,6 +30,7 @@ import { StorefrontComponent } from './storefront.component'; ImStorageUrlPipeModule, OffersModule, RequestsModule, + FormsModule, RouterModule.forChild([ { path: '', diff --git a/libs/client/shared/data-access/src/lib/+state/session/user-session.reducer.ts b/libs/client/shared/data-access/src/lib/+state/session/user-session.reducer.ts index bf63ca0e..2bc5da8c 100644 --- a/libs/client/shared/data-access/src/lib/+state/session/user-session.reducer.ts +++ b/libs/client/shared/data-access/src/lib/+state/session/user-session.reducer.ts @@ -26,6 +26,7 @@ export interface ExchangeAdminsWithBaDownloaded extends UnArray + diff --git a/libs/client/shared/ui/src/lib/im-tabs/im-tab/im-tab.component.ts b/libs/client/shared/ui/src/lib/im-tabs/im-tab/im-tab.component.ts index 238c2f11..0f4a9b06 100644 --- a/libs/client/shared/ui/src/lib/im-tabs/im-tab/im-tab.component.ts +++ b/libs/client/shared/ui/src/lib/im-tabs/im-tab/im-tab.component.ts @@ -8,4 +8,5 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; }) export class ImTabComponent { @Input() label = ''; + @Input() disabled = false; } diff --git a/libs/client/shared/ui/src/lib/im-tabs/im-tabs.component.html b/libs/client/shared/ui/src/lib/im-tabs/im-tabs.component.html index 5b724e1b..21209586 100644 --- a/libs/client/shared/ui/src/lib/im-tabs/im-tabs.component.html +++ b/libs/client/shared/ui/src/lib/im-tabs/im-tabs.component.html @@ -5,8 +5,12 @@ [activeTabIndex]="activeTabIndex" > - - {{ label }} + + {{ tab.label }} (); @@ -40,7 +41,21 @@ export class ImTabsComponent extends RxJSBaseClass implements AfterContentInit { } tabChangeEvent(event: Event) { - this.tabChange.emit((event as CustomEvent).detail.index); + const newIndex = (event as CustomEvent).detail.index; + const tabArray = this.tabs.toArray(); + if (!tabArray[newIndex]?.disabled) { + this.tabChange.emit(newIndex); + this.activeTabIndex = newIndex; + } else { + this.superTabs.selectTab(this.activeTabIndex); + } + } + + selectTab(index: number) { + if (!this.tabs.toArray()[index]?.disabled) { + this.superTabs.selectTab(index); + this.activeTabIndex = index; + } } ngAfterContentInit() { @@ -53,6 +68,9 @@ export class ImTabsComponent extends RxJSBaseClass implements AfterContentInit { } setIndex(index: number) { - this.superTabs.selectTab(index); + if (!this.tabs.toArray()[index]?.disabled) { + this.superTabs.selectTab(index); + } } + } diff --git a/libs/client/shell/src/lib/market/ep-cover/ep-cover.component.html b/libs/client/shell/src/lib/market/ep-cover/ep-cover.component.html index 16549b12..be16cf02 100644 --- a/libs/client/shell/src/lib/market/ep-cover/ep-cover.component.html +++ b/libs/client/shell/src/lib/market/ep-cover/ep-cover.component.html @@ -29,8 +29,13 @@ - - + +
{{ ep!.name }}
- +
Items For Sale
No offers listed.
diff --git a/libs/client/shell/src/lib/market/ep-cover/ep-cover.component.scss b/libs/client/shell/src/lib/market/ep-cover/ep-cover.component.scss index bf04868e..66c108f5 100644 --- a/libs/client/shell/src/lib/market/ep-cover/ep-cover.component.scss +++ b/libs/client/shell/src/lib/market/ep-cover/ep-cover.component.scss @@ -127,3 +127,12 @@ text-indent: 10%; box-sizing: content-box; } + + + + + + + + + diff --git a/libs/client/shell/src/lib/market/ep-cover/ep-cover.component.ts b/libs/client/shell/src/lib/market/ep-cover/ep-cover.component.ts index 423b45df..5211153c 100644 --- a/libs/client/shell/src/lib/market/ep-cover/ep-cover.component.ts +++ b/libs/client/shell/src/lib/market/ep-cover/ep-cover.component.ts @@ -31,6 +31,7 @@ interface State { }) export class EpCoverComponent extends StatefulComponent implements OnInit { @ViewChild('tabs') tabs!: ImTabsComponent; + readonly offersChecked = new Map< string, @@ -145,4 +146,5 @@ export class EpCoverComponent extends StatefulComponent implements OnInit buyVoucher(exchangePartner: ExchangePartnerMarketStoreModel) { this.user.vouchers.dispatchers.buy(exchangePartner, Array.from(this.offersChecked.values())); } + } diff --git a/libs/client/shell/src/lib/market/market.component.html b/libs/client/shell/src/lib/market/market.component.html index a97dae4d..86c333e1 100644 --- a/libs/client/shell/src/lib/market/market.component.html +++ b/libs/client/shell/src/lib/market/market.component.html @@ -51,10 +51,16 @@
{{ ep!.name }}
+ + +
-
+
+
{{ tag }}
+
+
diff --git a/libs/client/shell/src/lib/market/market.component.scss b/libs/client/shell/src/lib/market/market.component.scss index 8baec287..cb27a707 100644 --- a/libs/client/shell/src/lib/market/market.component.scss +++ b/libs/client/shell/src/lib/market/market.component.scss @@ -150,4 +150,21 @@ img { border: 2px solid var(--im-orange); border-radius: 13px; } + + +} + + +.tags { + display:flex ; + gap: 4px ; + flex-wrap: wrap; } +.tag { + background-color: var(--ion-color-primary) ; + color: white ; + font-size: 10px ; + padding: 2px 8px ; + border-radius: 4px; + white-space: nowrap; +} \ No newline at end of file diff --git a/libs/server/core/application-services/src/lib/ep-application/ep-application.service.ts b/libs/server/core/application-services/src/lib/ep-application/ep-application.service.ts index c857399f..aeb95dcd 100644 --- a/libs/server/core/application-services/src/lib/ep-application/ep-application.service.ts +++ b/libs/server/core/application-services/src/lib/ep-application/ep-application.service.ts @@ -235,6 +235,8 @@ export class EpApplicationService { receivingVouchers: [], sendingVouchers: [], view: null, + tags: [], + spendingOptions: "" }); } }); diff --git a/libs/server/core/domain-services/src/lib/exchange-partner/exchange-partner.entity.ts b/libs/server/core/domain-services/src/lib/exchange-partner/exchange-partner.entity.ts index 13a0ec23..763607d1 100644 --- a/libs/server/core/domain-services/src/lib/exchange-partner/exchange-partner.entity.ts +++ b/libs/server/core/domain-services/src/lib/exchange-partner/exchange-partner.entity.ts @@ -15,6 +15,7 @@ import { RequestEntity } from '../request/request.entity'; import { TransactionEntity } from '../transaction/transaction.entity'; import { VoucherEntity } from '../voucher/voucher.entity'; import { ExchangePartnerViewEntity } from './exchange-partner.view'; +import { deflate } from 'zlib'; @Entity({ name: DbTableNames.ExchangePartner }) export class ExchangePartnerEntity implements Required { @@ -50,6 +51,10 @@ export class ExchangePartnerEntity implements Required { dateCreated!: Date; @Column('text', { default: EpOnboardingState.profile }) onboardingState!: EpOnboardingState; + @Column('simple-array', { default: '' }) + tags: string[] = []; + @Column('text', {default: ' '}) + spendingOptions!: string; @OneToOne(() => HandleEntity, (e) => e.exchangePartner, { cascade: true }) @JoinColumn() diff --git a/libs/shared/domain/src/lib/domain/exchange-admin/exchange-admin.queries.ts b/libs/shared/domain/src/lib/domain/exchange-admin/exchange-admin.queries.ts index 5e3b950f..2b01e4fb 100644 --- a/libs/shared/domain/src/lib/domain/exchange-admin/exchange-admin.queries.ts +++ b/libs/shared/domain/src/lib/domain/exchange-admin/exchange-admin.queries.ts @@ -42,5 +42,7 @@ export const BaDownloadEpAdminsQuery = createQuery()({ view: { receivedThisMonth: true, }, + tags:true , + spendingOptions: true }, }); diff --git a/libs/shared/domain/src/lib/domain/exchange-partner/exchange-partner.model.ts b/libs/shared/domain/src/lib/domain/exchange-partner/exchange-partner.model.ts index b6c2738a..8e835913 100644 --- a/libs/shared/domain/src/lib/domain/exchange-partner/exchange-partner.model.ts +++ b/libs/shared/domain/src/lib/domain/exchange-partner/exchange-partner.model.ts @@ -34,6 +34,8 @@ export interface ExchangePartner { longitude?: number; dateCreated: Date | string; onboardingState: EpOnboardingState; + tags: string[] ; + spendingOptions: string ; address: IOneToOne; handle: IOneToOne; diff --git a/libs/shared/domain/src/lib/domain/exchange-partner/exchange-partner.queries.ts b/libs/shared/domain/src/lib/domain/exchange-partner/exchange-partner.queries.ts index 7f1c728e..a39b7154 100644 --- a/libs/shared/domain/src/lib/domain/exchange-partner/exchange-partner.queries.ts +++ b/libs/shared/domain/src/lib/domain/exchange-partner/exchange-partner.queries.ts @@ -63,6 +63,8 @@ export const ExchangePartnerMarketQuery = createQuery()({ dateUpdated: true, imagesFilePaths: true, }, + tags:true, + spendingOptions: true }); export const BaDownloadEpIdsWithEmailQuery = createQuery()({ diff --git a/libs/shared/domain/src/lib/domain/user/user.queries.ts b/libs/shared/domain/src/lib/domain/user/user.queries.ts index 718d0463..0297013b 100644 --- a/libs/shared/domain/src/lib/domain/user/user.queries.ts +++ b/libs/shared/domain/src/lib/domain/user/user.queries.ts @@ -68,6 +68,8 @@ export const UserQuery = createQuery()({ view: { receivedThisMonth: true, }, + tags:true, + spendingOptions:true }, }, serveAdmins: { diff --git a/package.json b/package.json index fc5aedb2..e31a2fab 100644 --- a/package.json +++ b/package.json @@ -1,183 +1,183 @@ -{ - "name": "involvemint", - "version": "2.19.0-beta", - "license": "PROPRIETARY", - "main": "dist/apps/api/main.js", - "scripts": { - "ng": "nx", - "nx": "nx", - "start": "node dist/apps/api/main.js", - "start:client": "ng serve involvemint", - "start:server": "ng serve api", - "start:client:local": "ng serve involvemint -c local", - "start:server:local": "ng serve api -c local", - "build": "nx run-many --target=build --projects=involvemint,api --prod --skip-nx-cache", - "build:client": "nx run-many --target=build --projects=involvemint --prod --skip-nx-cache", - "build:server": "nx run-many --target=build --projects=api --prod --skip-nx-cache", - "deploy:server": "nx run-many --target=build --projects=api --prod --skip-nx-cache && gcloud config set project involvemint2 && gcloud app deploy app.yaml --stop-previous-version --quiet", - "deploy:client": "nx run-many --target=build --projects=involvemint --prod --skip-nx-cache && firebase use involvemint2 && firebase deploy", - "deploy": "nx run-many --target=build --projects=involvemint,api --prod --skip-nx-cache && gcloud config set project involvemint2 && gcloud app deploy app.yaml --stop-previous-version --quiet && firebase use involvemint2 && firebase deploy && gcloud config set project involvemint-test && gcloud app deploy app.yaml --stop-previous-version --quiet && firebase use involvemint-test && firebase deploy", - "deploy:test": "nx run-many --target=build --projects=involvemint,api --configuration=test --skip-nx-cache && gcloud config set project im-test-395400 && gcloud app deploy app.yaml --stop-previous-version --quiet && firebase use im-test-395400 && firebase deploy", - "deploy:test:server": "nx run-many --target=build --projects=api --configuration=test --skip-nx-cache && gcloud config set project im-test-395400 && gcloud app deploy app.yaml --stop-previous-version --quiet", - "deploy:test:client": "nx run-many --target=build --projects=involvemint --configuration=test --skip-nx-cache && firebase use im-test-395400 && firebase deploy", - "test": "nx run-many --target=test --all", - "lint": "nx run-many --target=lint --all", - "e2e": "ng e2e", - "api:e2e": "ng e2e api-e2e --runInBand", - "code:line:count": "ts-node ./tools/scripts/code-line-count.ts", - "pretty": "prettier --write \"{,!(node_modules)/**/}*.{ts,scss,html,json}\"", - "affected:apps": "nx affected:apps", - "affected:libs": "nx affected:libs", - "affected:build": "nx affected:build", - "affected:e2e": "nx affected:e2e", - "affected:test": "nx affected:test", - "affected:lint": "nx affected:lint", - "affected:dep-graph": "nx affected:dep-graph", - "affected": "nx affected", - "format": "nx format:write", - "format:write": "nx format:write", - "format:check": "nx format:check", - "update": "nx migrate latest", - "workspace-generator": "nx workspace-generator", - "dep-graph": "nx dep-graph", - "help": "nx help" - }, - "browser": { - "fs": false, - "os": false, - "path": false - }, - "husky": { - "hooks": { - "pre-commit": "pretty-quick --staged" - } - }, - "engines": { - "npm": "8.19.4", - "node": "16.20.2" - }, - "private": true, - "dependencies": { - "@angular/animations": "^12.0.3", - "@angular/cdk": "^12.0.4", - "@angular/common": "^12.0.3", - "@angular/compiler": "^12.0.3", - "@angular/core": "^12.0.3", - "@angular/fire": "^6.1.5", - "@angular/forms": "^12.0.3", - "@angular/platform-browser": "^12.0.3", - "@angular/platform-browser-dynamic": "^12.0.3", - "@angular/router": "^12.0.3", - "@angular/service-worker": "^12.0.3", - "@google-cloud/storage": "5.8.5", - "@involvemint/scss": "file:./libs/client/shared/scss/src/lib", - "@ionic-native/core": "5.33.1", - "@ionic-native/splash-screen": "5.33.1", - "@ionic-native/status-bar": "5.33.1", - "@ionic-super-tabs/angular": "7.0.8", - "@ionic/angular": "5.6.9", - "@ionic/pwa-elements": "3.0.2", - "@nestjs/common": "7.6.17", - "@nestjs/core": "7.6.17", - "@nestjs/jwt": "7.2.0", - "@nestjs/platform-express": "7.6.17", - "@nestjs/platform-fastify": "7.6.17", - "@nestjs/platform-socket.io": "7.6.17", - "@nestjs/schedule": "0.4.3", - "@nestjs/typeorm": "7.1.5", - "@nestjs/websockets": "7.6.17", - "@ngneat/reactive-forms": "1.7.3", - "@ngrx/component-store": "^12.0.0", - "@ngrx/effects": "^12.0.0", - "@ngrx/entity": "^12.0.0", - "@ngrx/router-store": "^12.0.0", - "@ngrx/store": "^12.0.0", - "@nrwl/angular": "12.3.6", - "class-transformer": "0.4.0", - "class-validator": "0.13.1", - "cron": "1.8.2", - "date-fns": "2.22.1", - "fastify-static": "4.2.2", - "firebase": "8.6.5", - "firebase-admin": "9.9.0", - "firebase-scrypt": "2.1.0", - "husky": "6.0.0", - "lodash": "4.17.21", - "mailgun-js": "0.22.0", - "nestjs-typeorm-paginate": "2.6.2", - "ng2-currency-mask": "^13.0.3", - "ngx-autosize": "1.8.4", - "ngx-joyride": "2.4.0", - "ngx-pagination": "^5.1.1", - "node-geocoder": "3.27.0", - "passport": "0.4.1", - "passport-jwt": "4.0.0", - "passport-local": "1.0.0", - "pg": "8.6.0", - "reflect-metadata": "0.1.13", - "rxjs": "6.6.7", - "socket.io": "4.1.2", - "socket.io-client": "4.1.2", - "supertest": "^6.3.4", - "swiper": "6.7.0", - "tslib": "2.2.0", - "twilio": "3.63.1", - "typeorm": "0.2.37", - "typeorm-transactional-cls-hooked": "0.1.21", - "uuid": "8.3.2", - "zone.js": "~0.11.4" - }, - "devDependencies": { - "@angular-builders/custom-webpack": "^12.1.0", - "@angular-devkit/build-angular": "^12.0.3", - "@angular-eslint/eslint-plugin": "^12.1.0", - "@angular-eslint/eslint-plugin-template": "^12.1.0", - "@angular-eslint/template-parser": "^12.1.0", - "@angular/cli": "^12.0.3", - "@angular/compiler-cli": "^12.0.3", - "@angular/language-service": "^12.0.3", - "@nestjs/schematics": "7.3.1", - "@nestjs/testing": "7.6.17", - "@ngneat/spectator": "7.1.0", - "@ngrx/schematics": "^12.0.0", - "@ngrx/store-devtools": "^12.0.0", - "@nrwl/cli": "12.3.6", - "@nrwl/eslint-plugin-nx": "12.3.6", - "@nrwl/jest": "12.3.6", - "@nrwl/nest": "12.3.6", - "@nrwl/node": "12.3.6", - "@nrwl/nx-cloud": "12.1.10", - "@nrwl/tao": "12.3.6", - "@nrwl/workspace": "12.3.6", - "@types/cron": "1.7.2", - "@types/jest": "26.0.23", - "@types/jest-when": "2.7.3", - "@types/lodash": "4.14.170", - "@types/mailgun-js": "0.22.11", - "@types/multer": "1.4.5", - "@types/node": "15.12.2", - "@types/node-geocoder": "3.24.1", - "@types/passport-jwt": "3.0.5", - "@types/passport-local": "1.0.33", - "@types/socket.io": "3.0.1", - "@types/socket.io-client": "1.4.36", - "@types/supertest": "^6.0.2", - "@types/uuid": "8.3.0", - "@typescript-eslint/eslint-plugin": "4.26.1", - "@typescript-eslint/parser": "4.26.1", - "autoprefixer": "10.2.6", - "codelyzer": "6.0.2", - "eslint": "7.28.0", - "eslint-config-prettier": "8.3.0", - "firebase-tools": "^9.12.1", - "jest": "26.6.3", - "jest-junit": "^16.0.0", - "jest-preset-angular": "8.4.0", - "jest-when": "3.3.1", - "prettier": "2.3.1", - "pretty-quick": "3.1.0", - "ts-jest": "26.5.6", - "ts-node": "10.0.0", - "typescript": "4.2.4" - } -} +{ + "name": "involvemint", + "version": "2.19.0-beta", + "license": "PROPRIETARY", + "main": "dist/apps/api/main.js", + "scripts": { + "ng": "nx", + "nx": "nx", + "start": "node dist/apps/api/main.js", + "start:client": "ng serve involvemint", + "start:server": "ng serve api", + "start:client:local": "ng serve involvemint -c local", + "start:server:local": "ng serve api -c local", + "build": "nx run-many --target=build --projects=involvemint,api --prod --skip-nx-cache", + "build:client": "nx run-many --target=build --projects=involvemint --prod --skip-nx-cache", + "build:server": "nx run-many --target=build --projects=api --prod --skip-nx-cache", + "deploy:server": "nx run-many --target=build --projects=api --prod --skip-nx-cache && gcloud config set project involvemint2 && gcloud app deploy app.yaml --stop-previous-version --quiet", + "deploy:client": "nx run-many --target=build --projects=involvemint --prod --skip-nx-cache && firebase use involvemint2 && firebase deploy", + "deploy": "nx run-many --target=build --projects=involvemint,api --prod --skip-nx-cache && gcloud config set project involvemint2 && gcloud app deploy app.yaml --stop-previous-version --quiet && firebase use involvemint2 && firebase deploy && gcloud config set project involvemint-test && gcloud app deploy app.yaml --stop-previous-version --quiet && firebase use involvemint-test && firebase deploy", + "deploy:test": "nx run-many --target=build --projects=involvemint,api --configuration=test --skip-nx-cache && gcloud config set project im-test-395400 && gcloud app deploy app.yaml --stop-previous-version --quiet && firebase use im-test-395400 && firebase deploy", + "deploy:test:server": "nx run-many --target=build --projects=api --configuration=test --skip-nx-cache && gcloud config set project im-test-395400 && gcloud app deploy app.yaml --stop-previous-version --quiet", + "deploy:test:client": "nx run-many --target=build --projects=involvemint --configuration=test --skip-nx-cache && firebase use im-test-395400 && firebase deploy", + "test": "nx run-many --target=test --all", + "lint": "nx run-many --target=lint --all", + "e2e": "ng e2e", + "api:e2e": "ng e2e api-e2e --runInBand", + "code:line:count": "ts-node ./tools/scripts/code-line-count.ts", + "pretty": "prettier --write \"{,!(node_modules)/**/}*.{ts,scss,html,json}\"", + "affected:apps": "nx affected:apps", + "affected:libs": "nx affected:libs", + "affected:build": "nx affected:build", + "affected:e2e": "nx affected:e2e", + "affected:test": "nx affected:test", + "affected:lint": "nx affected:lint", + "affected:dep-graph": "nx affected:dep-graph", + "affected": "nx affected", + "format": "nx format:write", + "format:write": "nx format:write", + "format:check": "nx format:check", + "update": "nx migrate latest", + "workspace-generator": "nx workspace-generator", + "dep-graph": "nx dep-graph", + "help": "nx help" + }, + "browser": { + "fs": false, + "os": false, + "path": false + }, + "husky": { + "hooks": { + "pre-commit": "pretty-quick --staged" + } + }, + "engines": { + "npm": "8.19.4", + "node": "16.20.2" + }, + "private": true, + "dependencies": { + "@angular/animations": "^12.0.3", + "@angular/cdk": "^12.0.4", + "@angular/common": "^12.0.3", + "@angular/compiler": "^12.0.3", + "@angular/core": "^12.0.3", + "@angular/fire": "^6.1.5", + "@angular/forms": "^12.0.3", + "@angular/platform-browser": "^12.0.3", + "@angular/platform-browser-dynamic": "^12.0.3", + "@angular/router": "^12.0.3", + "@angular/service-worker": "^12.0.3", + "@google-cloud/storage": "5.8.5", + "@involvemint/scss": "file:./libs/client/shared/scss/src/lib", + "@ionic-native/core": "5.33.1", + "@ionic-native/splash-screen": "5.33.1", + "@ionic-native/status-bar": "5.33.1", + "@ionic-super-tabs/angular": "7.0.8", + "@ionic/angular": "5.6.9", + "@ionic/pwa-elements": "3.0.2", + "@nestjs/common": "7.6.17", + "@nestjs/core": "7.6.17", + "@nestjs/jwt": "7.2.0", + "@nestjs/platform-express": "7.6.17", + "@nestjs/platform-fastify": "7.6.17", + "@nestjs/platform-socket.io": "7.6.17", + "@nestjs/schedule": "0.4.3", + "@nestjs/typeorm": "7.1.5", + "@nestjs/websockets": "7.6.17", + "@ngneat/reactive-forms": "1.7.3", + "@ngrx/component-store": "^12.0.0", + "@ngrx/effects": "^12.0.0", + "@ngrx/entity": "^12.0.0", + "@ngrx/router-store": "^12.0.0", + "@ngrx/store": "^12.0.0", + "@nrwl/angular": "12.3.6", + "class-transformer": "0.4.0", + "class-validator": "0.13.1", + "cron": "1.8.2", + "date-fns": "2.22.1", + "fastify-static": "4.2.2", + "firebase": "8.6.5", + "firebase-admin": "9.9.0", + "firebase-scrypt": "2.1.0", + "husky": "6.0.0", + "lodash": "4.17.21", + "mailgun-js": "0.22.0", + "nestjs-typeorm-paginate": "2.6.2", + "ng2-currency-mask": "^13.0.3", + "ngx-autosize": "1.8.4", + "ngx-joyride": "2.4.0", + "ngx-pagination": "^5.1.1", + "node-geocoder": "3.27.0", + "passport": "0.4.1", + "passport-jwt": "4.0.0", + "passport-local": "1.0.0", + "pg": "8.6.0", + "reflect-metadata": "0.1.13", + "rxjs": "6.6.7", + "socket.io": "4.1.2", + "socket.io-client": "4.1.2", + "supertest": "^6.3.4", + "swiper": "6.7.0", + "tslib": "2.2.0", + "twilio": "3.63.1", + "typeorm": "0.2.37", + "typeorm-transactional-cls-hooked": "0.1.21", + "uuid": "8.3.2", + "zone.js": "~0.11.4" + }, + "devDependencies": { + "@angular-builders/custom-webpack": "^12.1.0", + "@angular-devkit/build-angular": "^12.0.3", + "@angular-eslint/eslint-plugin": "^12.1.0", + "@angular-eslint/eslint-plugin-template": "^12.1.0", + "@angular-eslint/template-parser": "^12.1.0", + "@angular/cli": "^12.0.3", + "@angular/compiler-cli": "^12.0.3", + "@angular/language-service": "^12.0.3", + "@nestjs/schematics": "7.3.1", + "@nestjs/testing": "7.6.17", + "@ngneat/spectator": "7.1.0", + "@ngrx/schematics": "^12.0.0", + "@ngrx/store-devtools": "^12.0.0", + "@nrwl/cli": "12.3.6", + "@nrwl/eslint-plugin-nx": "12.3.6", + "@nrwl/jest": "12.3.6", + "@nrwl/nest": "12.3.6", + "@nrwl/node": "12.3.6", + "@nrwl/nx-cloud": "12.1.10", + "@nrwl/tao": "12.3.6", + "@nrwl/workspace": "12.3.6", + "@types/cron": "1.7.2", + "@types/jest": "26.0.23", + "@types/jest-when": "2.7.3", + "@types/lodash": "4.14.170", + "@types/mailgun-js": "0.22.11", + "@types/multer": "1.4.5", + "@types/node": "15.12.2", + "@types/node-geocoder": "3.24.1", + "@types/passport-jwt": "3.0.5", + "@types/passport-local": "1.0.33", + "@types/socket.io": "3.0.1", + "@types/socket.io-client": "1.4.36", + "@types/supertest": "^6.0.2", + "@types/uuid": "8.3.0", + "@typescript-eslint/eslint-plugin": "4.26.1", + "@typescript-eslint/parser": "4.26.1", + "autoprefixer": "10.2.6", + "codelyzer": "6.0.2", + "eslint": "7.28.0", + "eslint-config-prettier": "8.3.0", + "firebase-tools": "^9.12.1", + "jest": "26.6.3", + "jest-junit": "^16.0.0", + "jest-preset-angular": "8.4.0", + "jest-when": "3.3.1", + "prettier": "2.3.1", + "pretty-quick": "3.1.0", + "ts-jest": "26.5.6", + "ts-node": "10.0.0", + "typescript": "4.2.4" + } +}