{"version":3,"file":"geometricpanda-ng-storyblok-services.mjs","sources":["../../../../projects/geometricpanda/ng-storyblok/services/interceptors/storyblok.context-token.ts","../../../../projects/geometricpanda/ng-storyblok/services/interceptors/storyblok.interceptor.ts","../../../../projects/geometricpanda/ng-storyblok/services/storyblok.service.ts","../../../../projects/geometricpanda/ng-storyblok/services/geometricpanda-ng-storyblok-services.ts"],"sourcesContent":["import { HttpContextToken } from '@angular/common/http';\nimport { ISbContentMangmntAPI, ISbStoriesParams, ISbStoryParams } from 'storyblok-js-client/src/interfaces';\n\nconst noop = () => null;\n\nexport type GetStoryContext = ISbStoryParams;\nexport const GET_STORY_CONTEXT = new HttpContextToken<GetStoryContext | null>(noop);\n\nexport type GetStoriesContext = ISbStoriesParams;\nexport const GET_STORIES_CONTEXT = new HttpContextToken<GetStoriesContext | null>(noop);\n\nexport type GetContext = ISbStoriesParams;\nexport const GET_CONTEXT = new HttpContextToken<GetContext | null>(noop);\n\nexport type GetAllContext = ISbStoriesParams;\nexport const GET_ALL_CONTEXT = new HttpContextToken<GetAllContext | null>(noop);\n\nexport type PostContext = ISbStoriesParams | ISbContentMangmntAPI;\nexport const POST_CONTEXT = new HttpContextToken<PostContext | null>(noop);\n\nexport type DeleteContext = ISbStoriesParams | ISbContentMangmntAPI;\nexport const DELETE_CONTEXT = new HttpContextToken<DeleteContext | null>(noop);\n","import { HttpInterceptorFn, HttpResponse } from '@angular/common/http';\nimport { TransferState, inject, makeStateKey } from '@angular/core';\nimport { NG_STORYBLOK_CLIENT, NG_STORYBLOK_TRANSFER_CACHE } from '@geometricpanda/ng-storyblok/tokens';\nimport { from, map, tap } from 'rxjs';\nimport { ISbResult, ISbStories, ISbStory } from 'storyblok-js-client';\nimport {\n    DELETE_CONTEXT,\n    GET_ALL_CONTEXT,\n    GET_CONTEXT,\n    GET_STORIES_CONTEXT,\n    GET_STORY_CONTEXT,\n    POST_CONTEXT,\n} from './storyblok.context-token';\n\nexport const storyblokInterceptor: HttpInterceptorFn = (req, next) => {\n    const storyblok = inject(NG_STORYBLOK_CLIENT);\n    const transferState = inject(TransferState);\n    const useCache = inject(NG_STORYBLOK_TRANSFER_CACHE, { optional: true });\n    const getCtx = req.context.get(GET_CONTEXT);\n    const getStoryCtx = req.context.get(GET_STORY_CONTEXT);\n    const getStoriesCtx = req.context.get(GET_STORIES_CONTEXT);\n    const getAllCtx = req.context.get(GET_ALL_CONTEXT);\n    const postCtx = req.context.get(POST_CONTEXT);\n    const deleteCtx = req.context.get(DELETE_CONTEXT);\n\n    if (getCtx) {\n        const key = makeStateKey<ISbResult>(`sb:${req.url}.${JSON.stringify(getCtx)}`);\n        const cache = transferState.get(key, null);\n\n        if (useCache && cache) {\n            return from([new HttpResponse({ body: cache })]);\n        }\n\n        return from(storyblok.get(req.url, getCtx))\n            .pipe(tap((story) => useCache && transferState.set(key, story)))\n            .pipe(map((story) => new HttpResponse({ body: story })));\n    }\n\n    if (getStoryCtx) {\n        const key = makeStateKey<ISbStory>(`sb:${req.url}.${JSON.stringify(getStoryCtx)}`);\n        const cache = transferState.get(key, null);\n\n        if (useCache && cache) {\n            return from([new HttpResponse({ body: cache })]);\n        }\n\n        return from(storyblok.getStory(req.url, getStoryCtx))\n            .pipe(tap((story) => useCache && transferState.set(key, story)))\n            .pipe(map((story) => new HttpResponse({ body: story })));\n    }\n\n    if (getStoriesCtx) {\n        const key = makeStateKey<ISbStories>(`sb:${req.url}.${JSON.stringify(getStoriesCtx)}`);\n        const cache = transferState.get(key, null);\n\n        if (useCache && cache) {\n            return from([new HttpResponse({ body: cache })]);\n        }\n\n        return from(storyblok.getStories(getStoriesCtx))\n            .pipe(tap((stories) => useCache && transferState.set(key, stories)))\n            .pipe(map((stories) => new HttpResponse({ body: stories })));\n    }\n\n    if (getAllCtx) {\n        const key = makeStateKey<Array<unknown>>(`sb:${req.url}.${JSON.stringify(getAllCtx)}`);\n        const cache = transferState.get(key, null);\n\n        if (useCache && cache) {\n            return from([new HttpResponse({ body: cache })]);\n        }\n\n        return from(storyblok.getAll(req.url, getAllCtx))\n            .pipe(tap((stories) => useCache && transferState.set(key, stories)))\n            .pipe(map((stories) => new HttpResponse({ body: stories })));\n    }\n\n    if (postCtx) {\n        return from(storyblok.post(req.url, postCtx)).pipe(map((story) => new HttpResponse({ body: story })));\n    }\n\n    if (deleteCtx) {\n        return from(storyblok.delete(req.url, deleteCtx)).pipe(map((story) => new HttpResponse({ body: story })));\n    }\n\n    return next(req);\n};\n","import { HttpClient, HttpContext } from '@angular/common/http';\nimport { Injectable, inject } from '@angular/core';\nimport { ISbResponseData } from '@geometricpanda/ng-storyblok';\nimport { ISbResult, ISbStory } from '@storyblok/js';\nimport { Observable } from 'rxjs';\nimport { ISbStories } from 'storyblok-js-client/src/interfaces';\nimport {\n    DELETE_CONTEXT,\n    DeleteContext,\n    GET_ALL_CONTEXT,\n    GET_CONTEXT,\n    GET_STORIES_CONTEXT,\n    GET_STORY_CONTEXT,\n    GetAllContext,\n    GetContext,\n    GetStoriesContext,\n    GetStoryContext,\n    POST_CONTEXT,\n    PostContext,\n} from './interceptors';\n\n/**\n * Storyblok service\n * Intercepts Angular HttpClient with the Storyblok API\n * This enables the use of standard Angular HttpClient testing methods\n */\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class Storyblok {\n    #httpClient = inject(HttpClient);\n\n    public get(slug: string, params: GetContext = {}) {\n        const context = new HttpContext().set(GET_CONTEXT, params);\n        return this.#httpClient.get<ISbResult>(slug, { context });\n    }\n\n    public getAll<T = unknown>(slug: string, params: GetAllContext = {}) {\n        const context = new HttpContext().set(GET_ALL_CONTEXT, params);\n        return this.#httpClient.get<Array<T>>(slug, { context });\n    }\n\n    public post(slug: string, params: PostContext = {}) {\n        const context = new HttpContext().set(POST_CONTEXT, params);\n        return this.#httpClient.post<ISbResponseData>(slug, params, { context });\n    }\n\n    public delete(slug: string, params: DeleteContext = {}): Observable<ISbResponseData> {\n        const context = new HttpContext().set(DELETE_CONTEXT, params);\n        return this.#httpClient.delete<ISbResponseData>(slug, { context });\n    }\n\n    public getStories(params: GetStoriesContext = {}) {\n        const context = new HttpContext().set(GET_STORIES_CONTEXT, params);\n        return this.#httpClient.get<ISbStories>(`stories`, { context });\n    }\n\n    public getStory(slug: string, params: GetStoryContext = {}) {\n        const context = new HttpContext().set(GET_STORY_CONTEXT, params);\n        return this.#httpClient.get<ISbStory>(slug, { context });\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}