UNPKG

angular-in-memory-web-api

Version:

An in-memory web api for Angular demos and tests

63 lines 7.57 kB
/** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ import { XhrFactory } from '@angular/common'; import { HttpBackend } from '@angular/common/http'; import { NgModule } from '@angular/core'; import { httpClientInMemBackendServiceFactory } from './http-client-in-memory-web-api-module'; import { InMemoryBackendConfig, InMemoryDbService } from './interfaces'; import * as i0 from "@angular/core"; export class InMemoryWebApiModule { /** * Redirect BOTH Angular `Http` and `HttpClient` XHR calls * to in-memory data store that implements `InMemoryDbService`. * with class that implements InMemoryDbService and creates an in-memory database. * * Usually imported in the root application module. * Can import in a lazy feature module too, which will shadow modules loaded earlier * * Note: If you use the `FetchBackend`, make sure forRoot is invoked after in the providers list * * @param dbCreator - Class that creates seed data for in-memory database. Must implement * InMemoryDbService. * @param [options] * * @example * InMemoryWebApiModule.forRoot(dbCreator); * InMemoryWebApiModule.forRoot(dbCreator, {useValue: {delay:600}}); */ static forRoot(dbCreator, options) { return { ngModule: InMemoryWebApiModule, providers: [ { provide: InMemoryDbService, useClass: dbCreator }, { provide: InMemoryBackendConfig, useValue: options }, { provide: HttpBackend, useFactory: httpClientInMemBackendServiceFactory, deps: [InMemoryDbService, InMemoryBackendConfig, XhrFactory], }, ], }; } /** * * Enable and configure the in-memory web api in a lazy-loaded feature module. * Same as `forRoot`. * This is a feel-good method so you can follow the Angular style guide for lazy-loaded modules. */ static forFeature(dbCreator, options) { return InMemoryWebApiModule.forRoot(dbCreator, options); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "0.0.0", ngImport: i0, type: InMemoryWebApiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); } static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "0.0.0", ngImport: i0, type: InMemoryWebApiModule }); } static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "0.0.0", ngImport: i0, type: InMemoryWebApiModule }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "0.0.0", ngImport: i0, type: InMemoryWebApiModule, decorators: [{ type: NgModule }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tbWVtb3J5LXdlYi1hcGktbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWlzYy9hbmd1bGFyLWluLW1lbW9yeS13ZWItYXBpL3NyYy9pbi1tZW1vcnktd2ViLWFwaS1tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQXNCLFFBQVEsRUFBTyxNQUFNLGVBQWUsQ0FBQztBQUVsRSxPQUFPLEVBQUMsb0NBQW9DLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RixPQUFPLEVBQUMscUJBQXFCLEVBQTZCLGlCQUFpQixFQUFDLE1BQU0sY0FBYyxDQUFDOztBQUdqRyxNQUFNLE9BQU8sb0JBQW9CO0lBQy9COzs7Ozs7Ozs7Ozs7Ozs7OztPQWlCRztJQUNILE1BQU0sQ0FBQyxPQUFPLENBQ1osU0FBa0MsRUFDbEMsT0FBbUM7UUFFbkMsT0FBTztZQUNMLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsU0FBUyxFQUFFO2dCQUNULEVBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUM7Z0JBQ2pELEVBQUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUM7Z0JBQ25EO29CQUNFLE9BQU8sRUFBRSxXQUFXO29CQUNwQixVQUFVLEVBQUUsb0NBQW9DO29CQUNoRCxJQUFJLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSxVQUFVLENBQUM7aUJBQzdEO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FDZixTQUFrQyxFQUNsQyxPQUFtQztRQUVuQyxPQUFPLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDMUQsQ0FBQzt5SEFoRFUsb0JBQW9COzBIQUFwQixvQkFBb0I7MEhBQXBCLG9CQUFvQjs7c0dBQXBCLG9CQUFvQjtrQkFEaEMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge1hockZhY3Rvcnl9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0h0dHBCYWNrZW5kfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge01vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtodHRwQ2xpZW50SW5NZW1CYWNrZW5kU2VydmljZUZhY3Rvcnl9IGZyb20gJy4vaHR0cC1jbGllbnQtaW4tbWVtb3J5LXdlYi1hcGktbW9kdWxlJztcbmltcG9ydCB7SW5NZW1vcnlCYWNrZW5kQ29uZmlnLCBJbk1lbW9yeUJhY2tlbmRDb25maWdBcmdzLCBJbk1lbW9yeURiU2VydmljZX0gZnJvbSAnLi9pbnRlcmZhY2VzJztcblxuQE5nTW9kdWxlKClcbmV4cG9ydCBjbGFzcyBJbk1lbW9yeVdlYkFwaU1vZHVsZSB7XG4gIC8qKlxuICAgKiAgUmVkaXJlY3QgQk9USCBBbmd1bGFyIGBIdHRwYCBhbmQgYEh0dHBDbGllbnRgIFhIUiBjYWxsc1xuICAgKiAgdG8gaW4tbWVtb3J5IGRhdGEgc3RvcmUgdGhhdCBpbXBsZW1lbnRzIGBJbk1lbW9yeURiU2VydmljZWAuXG4gICAqICB3aXRoIGNsYXNzIHRoYXQgaW1wbGVtZW50cyBJbk1lbW9yeURiU2VydmljZSBhbmQgY3JlYXRlcyBhbiBpbi1tZW1vcnkgZGF0YWJhc2UuXG4gICAqXG4gICAqICBVc3VhbGx5IGltcG9ydGVkIGluIHRoZSByb290IGFwcGxpY2F0aW9uIG1vZHVsZS5cbiAgICogIENhbiBpbXBvcnQgaW4gYSBsYXp5IGZlYXR1cmUgbW9kdWxlIHRvbywgd2hpY2ggd2lsbCBzaGFkb3cgbW9kdWxlcyBsb2FkZWQgZWFybGllclxuICAgKlxuICAgKiAgTm90ZTogSWYgeW91IHVzZSB0aGUgYEZldGNoQmFja2VuZGAsIG1ha2Ugc3VyZSBmb3JSb290IGlzIGludm9rZWQgYWZ0ZXIgaW4gdGhlIHByb3ZpZGVycyBsaXN0XG4gICAqXG4gICAqIEBwYXJhbSBkYkNyZWF0b3IgLSBDbGFzcyB0aGF0IGNyZWF0ZXMgc2VlZCBkYXRhIGZvciBpbi1tZW1vcnkgZGF0YWJhc2UuIE11c3QgaW1wbGVtZW50XG4gICAqICAgICBJbk1lbW9yeURiU2VydmljZS5cbiAgICogQHBhcmFtIFtvcHRpb25zXVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBJbk1lbW9yeVdlYkFwaU1vZHVsZS5mb3JSb290KGRiQ3JlYXRvcik7XG4gICAqIEluTWVtb3J5V2ViQXBpTW9kdWxlLmZvclJvb3QoZGJDcmVhdG9yLCB7dXNlVmFsdWU6IHtkZWxheTo2MDB9fSk7XG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdChcbiAgICBkYkNyZWF0b3I6IFR5cGU8SW5NZW1vcnlEYlNlcnZpY2U+LFxuICAgIG9wdGlvbnM/OiBJbk1lbW9yeUJhY2tlbmRDb25maWdBcmdzLFxuICApOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEluTWVtb3J5V2ViQXBpTW9kdWxlPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBJbk1lbW9yeVdlYkFwaU1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7cHJvdmlkZTogSW5NZW1vcnlEYlNlcnZpY2UsIHVzZUNsYXNzOiBkYkNyZWF0b3J9LFxuICAgICAgICB7cHJvdmlkZTogSW5NZW1vcnlCYWNrZW5kQ29uZmlnLCB1c2VWYWx1ZTogb3B0aW9uc30sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBIdHRwQmFja2VuZCxcbiAgICAgICAgICB1c2VGYWN0b3J5OiBodHRwQ2xpZW50SW5NZW1CYWNrZW5kU2VydmljZUZhY3RvcnksXG4gICAgICAgICAgZGVwczogW0luTWVtb3J5RGJTZXJ2aWNlLCBJbk1lbW9yeUJhY2tlbmRDb25maWcsIFhockZhY3RvcnldLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEVuYWJsZSBhbmQgY29uZmlndXJlIHRoZSBpbi1tZW1vcnkgd2ViIGFwaSBpbiBhIGxhenktbG9hZGVkIGZlYXR1cmUgbW9kdWxlLlxuICAgKiBTYW1lIGFzIGBmb3JSb290YC5cbiAgICogVGhpcyBpcyBhIGZlZWwtZ29vZCBtZXRob2Qgc28geW91IGNhbiBmb2xsb3cgdGhlIEFuZ3VsYXIgc3R5bGUgZ3VpZGUgZm9yIGxhenktbG9hZGVkIG1vZHVsZXMuXG4gICAqL1xuICBzdGF0aWMgZm9yRmVhdHVyZShcbiAgICBkYkNyZWF0b3I6IFR5cGU8SW5NZW1vcnlEYlNlcnZpY2U+LFxuICAgIG9wdGlvbnM/OiBJbk1lbW9yeUJhY2tlbmRDb25maWdBcmdzLFxuICApOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEluTWVtb3J5V2ViQXBpTW9kdWxlPiB7XG4gICAgcmV0dXJuIEluTWVtb3J5V2ViQXBpTW9kdWxlLmZvclJvb3QoZGJDcmVhdG9yLCBvcHRpb25zKTtcbiAgfVxufVxuIl19