diff --git a/projects/ngx-cookie-service/express-ssr/ng-package.json b/projects/ngx-cookie-service/express-ssr/ng-package.json new file mode 100644 index 0000000..d19b081 --- /dev/null +++ b/projects/ngx-cookie-service/express-ssr/ng-package.json @@ -0,0 +1,7 @@ +{ + "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../../dist/ngx-cookie-service/express-ssr", + "lib": { + "entryFile": "src/public-api.ts" + } +} diff --git a/projects/ngx-cookie-service/express-ssr/package.json b/projects/ngx-cookie-service/express-ssr/package.json new file mode 100644 index 0000000..8ad8731 --- /dev/null +++ b/projects/ngx-cookie-service/express-ssr/package.json @@ -0,0 +1,8 @@ +{ + "name": "ngx-cookie-service/express-ssr", + "license": "MIT", + "peerDependencies": { + "@nguniversal/express-engine": "^13.0.1", + "express": "^4.17.2" + } +} diff --git a/projects/ngx-cookie-service/express-ssr/src/express-request.provider.ts b/projects/ngx-cookie-service/express-ssr/src/express-request.provider.ts new file mode 100644 index 0000000..9bfc382 --- /dev/null +++ b/projects/ngx-cookie-service/express-ssr/src/express-request.provider.ts @@ -0,0 +1,13 @@ +import {StaticProvider} from '@angular/core'; +import {REQUEST} from '@nguniversal/express-engine/tokens'; +import {REQUEST_PROVIDER_TOKEN, RequestProvider} from 'ngx-cookie-service/request-provider'; + +export const requestProviderFactory = (request: RequestProvider) => { + return request; +}; + +export const expressRequestProvider: StaticProvider = { + provide: REQUEST_PROVIDER_TOKEN, + useFactory: requestProviderFactory, + deps: [REQUEST] +}; diff --git a/projects/ngx-cookie-service/express-ssr/src/public-api.ts b/projects/ngx-cookie-service/express-ssr/src/public-api.ts new file mode 100644 index 0000000..e25c748 --- /dev/null +++ b/projects/ngx-cookie-service/express-ssr/src/public-api.ts @@ -0,0 +1 @@ +export * from './express-request.provider'; diff --git a/projects/ngx-cookie-service/request-provider/ng-package.json b/projects/ngx-cookie-service/request-provider/ng-package.json new file mode 100644 index 0000000..d19b081 --- /dev/null +++ b/projects/ngx-cookie-service/request-provider/ng-package.json @@ -0,0 +1,7 @@ +{ + "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../../dist/ngx-cookie-service/express-ssr", + "lib": { + "entryFile": "src/public-api.ts" + } +} diff --git a/projects/ngx-cookie-service/request-provider/package.json b/projects/ngx-cookie-service/request-provider/package.json new file mode 100644 index 0000000..fa6d9c6 --- /dev/null +++ b/projects/ngx-cookie-service/request-provider/package.json @@ -0,0 +1,4 @@ +{ + "name": "ngx-cookie-service/request-provider", + "license": "MIT" +} diff --git a/projects/ngx-cookie-service/request-provider/src/public-api.ts b/projects/ngx-cookie-service/request-provider/src/public-api.ts new file mode 100644 index 0000000..83e5341 --- /dev/null +++ b/projects/ngx-cookie-service/request-provider/src/public-api.ts @@ -0,0 +1 @@ +export * from './request.provider'; diff --git a/projects/ngx-cookie-service/request-provider/src/request.provider.ts b/projects/ngx-cookie-service/request-provider/src/request.provider.ts new file mode 100644 index 0000000..d174a39 --- /dev/null +++ b/projects/ngx-cookie-service/request-provider/src/request.provider.ts @@ -0,0 +1,9 @@ +import {InjectionToken} from '@angular/core'; + +export interface RequestProvider { + headers? : { + cookie: string; + } +} + +export const REQUEST_PROVIDER_TOKEN = new InjectionToken('request provider token') diff --git a/projects/ngx-cookie-service/src/lib/cookie.service.ts b/projects/ngx-cookie-service/src/lib/cookie.service.ts index e07cda8..56e0802 100644 --- a/projects/ngx-cookie-service/src/lib/cookie.service.ts +++ b/projects/ngx-cookie-service/src/lib/cookie.service.ts @@ -2,8 +2,9 @@ // not use `DOCUMENT` injection and therefore doesn't work well with AoT production builds. // Package: https://github.com/BCJTI/ng2-cookies -import { Inject, Injectable, PLATFORM_ID } from '@angular/core'; +import { Inject, Injectable, Optional, PLATFORM_ID } from '@angular/core'; import { DOCUMENT, isPlatformBrowser } from '@angular/common'; +import { REQUEST_PROVIDER_TOKEN, RequestProvider } from 'ngx-cookie-service/request-provider'; @Injectable({ providedIn: 'root', @@ -14,7 +15,8 @@ export class CookieService { constructor( @Inject(DOCUMENT) private document: Document, // Get the `PLATFORM_ID` so we can check if we're in a browser. - @Inject(PLATFORM_ID) private platformId + @Inject(PLATFORM_ID) private platformId: any, + @Optional() @Inject(REQUEST_PROVIDER_TOKEN) private request: RequestProvider ) { this.documentIsAccessible = isPlatformBrowser(this.platformId); } diff --git a/tsconfig.json b/tsconfig.json index 171dc46..9e1dbbb 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,7 +14,9 @@ "typeRoots": ["node_modules/@types"], "lib": ["es2018", "dom"], "paths": { - "ngx-cookie-service": ["dist/ngx-cookie-service/ngx-cookie-service", "dist/ngx-cookie-service"] + "ngx-cookie-service": ["projects/ngx-cookie-service/src/public-api.ts"], + "ngx-cookie-service/express-ssr": ["projects/ngx-cookie-service/express-ssr/src/public-api.ts"], + "ngx-cookie-service/request-provider": ["projects/ngx-cookie-service/request-provider/src/public-api.ts"], } }, "angularCompilerOptions": {