@alfresco/adf-core 9.1.0-16879045101 → 9.1.0-16936569382

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -396,7 +396,7 @@ class AdfHttpClient {
396
396
  try {
397
397
  document.cookie = 'CSRF-TOKEN=' + token + ';path=/';
398
398
  }
399
- catch (err) {
399
+ catch {
400
400
  /* continue regardless of error */
401
401
  }
402
402
  }
@@ -1 +1 @@
1
- {"version":3,"file":"alfresco-adf-core-api.mjs","sources":["../../../../lib/core/api/src/lib/types.ts","../../../../lib/core/api/src/lib/alfresco-api/alfresco-api.utils.ts","../../../../lib/core/api/src/lib/alfresco-api/alfresco-api.param-encoder.ts","../../../../lib/core/api/src/lib/alfresco-api/alfresco-api.response-error.ts","../../../../lib/core/api/src/lib/adf-http-client.service.ts","../../../../lib/core/api/src/lib/interfaces.ts","../../../../lib/core/api/src/index.ts","../../../../lib/core/api/src/alfresco-adf-core-api.ts"],"sourcesContent":["/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface Dictionary<T> {\n [key: string]: T;\n}\n\nexport type Constructor<T> = new (...args: any[]) => T;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n HttpEvent,\n HttpUploadProgressEvent,\n HttpEventType,\n HttpResponse,\n HttpParams,\n HttpParameterCodec,\n HttpUrlEncodingCodec\n} from '@angular/common/http';\nimport { Constructor } from '../types';\n\nexport const isHttpUploadProgressEvent = <T>(val: HttpEvent<T>): val is HttpUploadProgressEvent => val.type === HttpEventType.UploadProgress;\nexport const isHttpResponseEvent = <T>(val: HttpEvent<T>): val is HttpResponse<T> => val.type === HttpEventType.Response;\nexport const isDate = (value: unknown): value is Date => value instanceof Date;\nexport const isXML = (value: unknown): boolean => typeof value === 'string' && value.startsWith('<?xml');\nexport const isBlobResponse = (response: HttpResponse<any>, returnType: Constructor<unknown> | 'blob'): response is HttpResponse<Blob> =>\n returnType === 'blob' || response.body instanceof Blob;\nexport const isConstructor = <T = unknown>(value: any): value is Constructor<T> =>\n typeof value === 'function' && !!value?.prototype?.constructor.name;\n\nconst convertParamsToString = (value: any): any => (isDate(value) ? value.toISOString() : value);\nexport const getQueryParamsWithCustomEncoder = (\n obj: Record<string | number, unknown>,\n encoder: HttpParameterCodec = new HttpUrlEncodingCodec()\n): HttpParams | undefined => {\n if (!obj) {\n return undefined;\n }\n\n let httpParams = new HttpParams({\n encoder\n });\n\n const params = removeNilValues(obj);\n\n for (const key in params) {\n if (Object.prototype.hasOwnProperty.call(params, key)) {\n const value = params[key];\n if (value instanceof Array) {\n const array = value.map(convertParamsToString).filter(Boolean);\n httpParams = httpParams.appendAll({\n [key]: array\n });\n } else {\n httpParams = httpParams.append(key, convertParamsToString(value));\n }\n }\n }\n\n return httpParams;\n};\n\n/**\n * Removes null and undefined values from an object.\n *\n * @param obj object to process\n * @returns object with updated values\n */\nexport const removeNilValues = (obj: Record<string | number, unknown>) => {\n if (!obj) {\n return {};\n }\n\n return Object.keys(obj).reduce((acc, key) => {\n const value = obj[key];\n const isNil = value === undefined || value === null;\n return isNil ? acc : { ...acc, [key]: value };\n }, {});\n};\n\nexport const convertObjectToFormData = (formParams: Record<string | number, string | Blob>): FormData => {\n const formData = new FormData();\n\n for (const key in formParams) {\n if (Object.prototype.hasOwnProperty.call(formParams, key)) {\n const value = formParams[key];\n if (value instanceof File) {\n formData.append(key, value, value.name);\n } else {\n formData.append(key, value);\n }\n }\n }\n\n return formData;\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { HttpParameterCodec } from '@angular/common/http';\n\n// The default implementation of HttpParameterCodec from angular\n// does not encode some special characters like + with is causing issues with the alfresco js API and returns 500 error\n\nexport class AlfrescoApiParamEncoder implements HttpParameterCodec {\n encodeKey(key: string): string {\n return encodeURIComponent(key);\n }\n\n encodeValue(value: string): string {\n return encodeURIComponent(value);\n }\n\n decodeKey(key: string): string {\n return decodeURIComponent(key);\n }\n\n decodeValue(value: string): string {\n return decodeURIComponent(value);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class AlfrescoApiResponseError extends Error {\n public name = 'AlfrescoApiResponseError';\n\n constructor(msg: string, public status: number, public response: Record<string, any>) {\n super(msg);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SHOULD_ADD_AUTH_TOKEN } from '@alfresco/adf-core/auth';\nimport { Emitters as JsApiEmitters, HttpClient as JsApiHttpClient } from '@alfresco/js-api';\nimport { HttpClient, HttpContext, HttpErrorResponse, HttpEvent, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, of, Subject, throwError } from 'rxjs';\nimport { catchError, map, takeUntil } from 'rxjs/operators';\nimport {\n convertObjectToFormData,\n getQueryParamsWithCustomEncoder,\n isBlobResponse,\n isConstructor,\n isHttpResponseEvent,\n isHttpUploadProgressEvent,\n removeNilValues\n} from './alfresco-api/alfresco-api.utils';\nimport { AlfrescoApiParamEncoder } from './alfresco-api/alfresco-api.param-encoder';\nimport { AlfrescoApiResponseError } from './alfresco-api/alfresco-api.response-error';\nimport { Constructor } from './types';\nimport { RequestOptions, SecurityOptions } from './interfaces';\nimport ee, { Emitter } from 'event-emitter';\n\nexport interface Emitters {\n readonly eventEmitter: Emitter;\n readonly apiClientEmitter: Emitter;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AdfHttpClient implements ee.Emitter, JsApiHttpClient {\n on: ee.EmitterMethod;\n off: ee.EmitterMethod;\n once: ee.EmitterMethod;\n _disableCsrf: boolean;\n\n emit: (type: string, ...args: any[]) => void;\n\n get disableCsrf(): boolean {\n return this._disableCsrf;\n }\n\n set disableCsrf(disableCsrf: boolean) {\n this._disableCsrf = disableCsrf;\n }\n\n private defaultSecurityOptions = {\n withCredentials: true,\n isBpmRequest: false,\n authentications: {},\n defaultHeaders: {}\n };\n\n constructor(private httpClient: HttpClient) {\n ee(this);\n }\n\n setDefaultSecurityOption(options: any) {\n this.defaultSecurityOptions = this.merge(this.defaultSecurityOptions, options);\n }\n\n merge(...objects): any {\n const result = {};\n\n objects.forEach((source) => {\n Object.keys(source).forEach((prop) => {\n if (prop in result && Array.isArray(result[prop])) {\n result[prop] = result[prop].concat(source[prop]);\n } else if (prop in result && typeof result[prop] === 'object') {\n result[prop] = this.merge(result[prop], source[prop]);\n } else {\n result[prop] = source[prop];\n }\n });\n });\n\n return result;\n }\n\n request<T = any>(url: string, options?: RequestOptions, sc: SecurityOptions = this.defaultSecurityOptions, emitters?: JsApiEmitters): Promise<T> {\n const body = AdfHttpClient.getBody(options);\n const params = getQueryParamsWithCustomEncoder(options.queryParams, new AlfrescoApiParamEncoder());\n const responseType = AdfHttpClient.getResponseType(options);\n const context = new HttpContext().set(SHOULD_ADD_AUTH_TOKEN, true);\n const security: SecurityOptions = { ...this.defaultSecurityOptions, ...sc };\n const headers = this.getHeaders(options);\n if (!emitters) {\n emitters = this.getEventEmitters();\n }\n\n const request = this.httpClient.request(options.httpMethod, url, {\n context,\n ...(body && { body }),\n ...(responseType && { responseType }),\n ...security,\n ...(params && { params }),\n headers,\n observe: 'events',\n reportProgress: true\n });\n\n return this.requestWithLegacyEventEmitters<T>(request, emitters, options.returnType);\n }\n\n post<T = any>(url: string, options?: RequestOptions, sc?: SecurityOptions, emitters?: JsApiEmitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'POST' }, sc, emitters);\n }\n\n put<T = any>(url: string, options?: RequestOptions, sc?: SecurityOptions, emitters?: JsApiEmitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'PUT' }, sc, emitters);\n }\n\n get<T = any>(url: string, options?: RequestOptions, sc?: SecurityOptions, emitters?: JsApiEmitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'GET' }, sc, emitters);\n }\n\n delete<T = void>(url: string, options?: RequestOptions, sc?: SecurityOptions, emitters?: JsApiEmitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'DELETE' }, sc, emitters);\n }\n\n private addPromiseListeners<T = any>(promise: Promise<T>, eventEmitter: any) {\n const eventPromise = Object.assign(promise, {\n on() {\n // eslint-disable-next-line prefer-spread, prefer-rest-params\n eventEmitter.on.apply(eventEmitter, arguments);\n return this;\n },\n once() {\n // eslint-disable-next-line prefer-spread, prefer-rest-params\n eventEmitter.once.apply(eventEmitter, arguments);\n return this;\n },\n emit() {\n // eslint-disable-next-line prefer-spread, prefer-rest-params\n eventEmitter.emit.apply(eventEmitter, arguments);\n return this;\n },\n off() {\n // eslint-disable-next-line prefer-spread, prefer-rest-params\n eventEmitter.off.apply(eventEmitter, arguments);\n return this;\n }\n });\n\n return eventPromise;\n }\n\n private getEventEmitters(): Emitters {\n const apiClientEmitter = {\n on: this.on.bind(this),\n off: this.off.bind(this),\n once: this.once.bind(this),\n emit: this.emit.bind(this)\n };\n\n return {\n apiClientEmitter,\n eventEmitter: ee({})\n };\n }\n\n private requestWithLegacyEventEmitters<T = any>(request$: Observable<HttpEvent<T>>, emitters: JsApiEmitters, returnType: any): Promise<T> {\n const abort$ = new Subject<void>();\n const { eventEmitter, apiClientEmitter } = emitters;\n\n const promise = request$\n .pipe(\n map((res) => {\n if (isHttpUploadProgressEvent(res)) {\n const percent = Math.round((res.loaded / res.total) * 100);\n eventEmitter.emit('progress', { loaded: res.loaded, total: res.total, percent });\n }\n\n if (isHttpResponseEvent(res)) {\n eventEmitter.emit('success', res.body);\n return AdfHttpClient.deserialize(res, returnType);\n }\n }),\n catchError((err: HttpErrorResponse): Observable<AlfrescoApiResponseError> => {\n // since we can't always determinate ahead of time if the response is going to be xml or plain text response\n // we need to handle false positive cases here.\n\n if (err.status === 200) {\n eventEmitter.emit('success', err.error.text);\n return of(err.error.text);\n }\n\n eventEmitter.emit('error', err);\n apiClientEmitter.emit('error', { ...err, response: { req: err } });\n\n if (err.status === 401) {\n eventEmitter.emit('unauthorized');\n apiClientEmitter.emit('unauthorized');\n }\n\n // for backwards compatibility we need to convert it to error class as the HttpErrorResponse only implements Error interface, not extending it,\n // and we need to be able to correctly pass instanceof Error conditions used inside repository\n // we also need to pass error as Stringify string as we are detecting statusCodes using JSON.parse(error.message) in some places\n const msg = typeof err.error === 'string' ? err.error : JSON.stringify(err.error);\n\n // for backwards compatibility to handle cases in code where we try read response.error.response.body;\n\n const error = {\n ...err,\n body: err.error\n };\n\n const alfrescoApiError = new AlfrescoApiResponseError(msg, err.status, error);\n return throwError(alfrescoApiError);\n }),\n takeUntil(abort$)\n )\n .toPromise();\n\n (promise as any).abort = function () {\n eventEmitter.emit('abort');\n abort$.next();\n abort$.complete();\n return this;\n };\n\n return this.addPromiseListeners(promise, eventEmitter);\n }\n\n private static getBody(options: RequestOptions): any {\n const contentType = options.contentType ? options.contentType : AdfHttpClient.jsonPreferredMime(options.contentTypes);\n const isFormData = contentType === 'multipart/form-data';\n const isFormUrlEncoded = contentType === 'application/x-www-form-urlencoded';\n const body = options.bodyParam;\n\n if (isFormData) {\n return convertObjectToFormData(options.formParams);\n }\n\n if (isFormUrlEncoded) {\n return new HttpParams({ fromObject: removeNilValues(options.formParams) });\n }\n\n return body;\n }\n\n private getHeaders(options: RequestOptions): HttpHeaders {\n const contentType = options.contentType || AdfHttpClient.jsonPreferredMime(options.contentTypes);\n const accept = options.accept || AdfHttpClient.jsonPreferredMime(options.accepts);\n\n const optionsHeaders = {\n ...options.headerParams,\n ...(accept && { Accept: accept }),\n ...(contentType && { 'Content-Type': contentType })\n };\n\n if (!this.disableCsrf) {\n this.setCsrfToken(optionsHeaders);\n }\n\n return new HttpHeaders(optionsHeaders);\n }\n\n /**\n * Chooses a content type from the given array, with JSON preferred; i.e. return JSON if included, otherwise return the first.\n *\n * @param contentTypes a contentType array\n * @returns The chosen content type, preferring JSON.\n */\n private static jsonPreferredMime(contentTypes: readonly string[]): string {\n if (!contentTypes?.length) {\n return 'application/json';\n }\n\n for (let i = 0; i < contentTypes.length; i++) {\n if (AdfHttpClient.isJsonMime(contentTypes[i])) {\n return contentTypes[i];\n }\n }\n return contentTypes[0];\n }\n\n /**\n * Checks whether the given content type represents JSON.<br>\n * JSON content type examples:<br>\n * <ul>\n * <li>application/json</li>\n * <li>application/json; charset=UTF8</li>\n * <li>APPLICATION/JSON</li>\n * </ul>\n *\n * @param contentType The MIME content type to check.\n * @returns <code>true</code> if <code>contentType</code> represents JSON, otherwise <code>false</code>.\n */\n private static isJsonMime(contentType: string): boolean {\n return Boolean(contentType?.match(/^application\\/json(;.*)?$/i));\n }\n\n private setCsrfToken(optionsHeaders: any) {\n const token = this.createCSRFToken();\n optionsHeaders['X-CSRF-TOKEN'] = token;\n\n try {\n document.cookie = 'CSRF-TOKEN=' + token + ';path=/';\n } catch (err) {\n /* continue regardless of error */\n }\n }\n\n private createCSRFToken(a?: any): string {\n const randomValue = AdfHttpClient.getSecureRandomValue();\n return a ? (a ^ ((randomValue * 16) >> (a / 4))).toString(16) : ([1e16] + (1e16).toString()).replace(/[01]/g, this.createCSRFToken);\n }\n\n private static getSecureRandomValue(): number {\n const max = Math.pow(2, 32);\n return window.crypto.getRandomValues(new Uint32Array(1))[0] / max;\n }\n\n private static getResponseType(options: RequestOptions): 'blob' | 'json' | 'text' {\n const isBlobType = options.returnType?.toString().toLowerCase() === 'blob' || options.responseType?.toString().toLowerCase() === 'blob';\n\n if (isBlobType) {\n return 'blob';\n }\n\n if (options.returnType === 'String') {\n return 'text';\n }\n\n return 'json';\n }\n\n /**\n * Deserialize an HTTP response body into a value of the specified type.\n *\n * @param response response object\n * @param returnType return type\n * @returns deserialized object\n */\n private static deserialize<T>(response: HttpResponse<T>, returnType?: Constructor<unknown> | 'blob'): any {\n if (response === null) {\n return null;\n }\n\n const body = response.body;\n\n if (!returnType) {\n // for backwards compatibility we need to return empty string instead of null,\n // to avoid issues when accessing null response would break application [C309878]\n // cannot read property 'entry' of null in cases like\n // return this.post(apiUrl, saveFormRepresentation).pipe(map((res: any) => res.entry))\n\n return body !== null ? body : '';\n }\n\n if (isBlobResponse(response, returnType)) {\n return AdfHttpClient.deserializeBlobResponse(response);\n }\n\n if (!isConstructor(returnType)) {\n return body;\n }\n\n if (Array.isArray(body)) {\n return body.map((element) => new returnType(element));\n }\n\n return new returnType(body);\n }\n\n private static deserializeBlobResponse(response: HttpResponse<Blob>) {\n return new Blob([response.body], { type: response.headers.get('Content-Type') });\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface SecurityOptions {\n readonly withCredentials?: boolean;\n readonly authentications?: Authentication;\n readonly defaultHeaders?: Record<string, string>;\n}\n\nexport interface Oauth2 {\n refreshToken?: string;\n accessToken?: string;\n}\n\nexport interface BasicAuth {\n username?: string;\n password?: string;\n ticket?: string;\n}\n\nexport interface Authentication {\n basicAuth?: BasicAuth;\n oauth2?: Oauth2;\n cookie?: string;\n type?: string;\n}\n\nexport interface RequestOptions {\n httpMethod?: string;\n pathParams?: any;\n queryParams?: any;\n headerParams?: any;\n formParams?: any;\n bodyParam?: any;\n returnType?: any;\n responseType?: string;\n accepts?: string[];\n contentTypes?: string[];\n readonly accept?: string;\n readonly contentType?: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './lib/types';\nexport * from './lib/adf-http-client.service';\nexport * from './lib/interfaces';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"alfresco-adf-core-api.mjs","sources":["../../../../lib/core/api/src/lib/types.ts","../../../../lib/core/api/src/lib/alfresco-api/alfresco-api.utils.ts","../../../../lib/core/api/src/lib/alfresco-api/alfresco-api.param-encoder.ts","../../../../lib/core/api/src/lib/alfresco-api/alfresco-api.response-error.ts","../../../../lib/core/api/src/lib/adf-http-client.service.ts","../../../../lib/core/api/src/lib/interfaces.ts","../../../../lib/core/api/src/index.ts","../../../../lib/core/api/src/alfresco-adf-core-api.ts"],"sourcesContent":["/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface Dictionary<T> {\n [key: string]: T;\n}\n\nexport type Constructor<T> = new (...args: any[]) => T;\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n HttpEvent,\n HttpUploadProgressEvent,\n HttpEventType,\n HttpResponse,\n HttpParams,\n HttpParameterCodec,\n HttpUrlEncodingCodec\n} from '@angular/common/http';\nimport { Constructor } from '../types';\n\nexport const isHttpUploadProgressEvent = <T>(val: HttpEvent<T>): val is HttpUploadProgressEvent => val.type === HttpEventType.UploadProgress;\nexport const isHttpResponseEvent = <T>(val: HttpEvent<T>): val is HttpResponse<T> => val.type === HttpEventType.Response;\nexport const isDate = (value: unknown): value is Date => value instanceof Date;\nexport const isXML = (value: unknown): boolean => typeof value === 'string' && value.startsWith('<?xml');\nexport const isBlobResponse = (response: HttpResponse<any>, returnType: Constructor<unknown> | 'blob'): response is HttpResponse<Blob> =>\n returnType === 'blob' || response.body instanceof Blob;\nexport const isConstructor = <T = unknown>(value: any): value is Constructor<T> =>\n typeof value === 'function' && !!value?.prototype?.constructor.name;\n\nconst convertParamsToString = (value: any): any => (isDate(value) ? value.toISOString() : value);\nexport const getQueryParamsWithCustomEncoder = (\n obj: Record<string | number, unknown>,\n encoder: HttpParameterCodec = new HttpUrlEncodingCodec()\n): HttpParams | undefined => {\n if (!obj) {\n return undefined;\n }\n\n let httpParams = new HttpParams({\n encoder\n });\n\n const params = removeNilValues(obj);\n\n for (const key in params) {\n if (Object.prototype.hasOwnProperty.call(params, key)) {\n const value = params[key];\n if (value instanceof Array) {\n const array = value.map(convertParamsToString).filter(Boolean);\n httpParams = httpParams.appendAll({\n [key]: array\n });\n } else {\n httpParams = httpParams.append(key, convertParamsToString(value));\n }\n }\n }\n\n return httpParams;\n};\n\n/**\n * Removes null and undefined values from an object.\n *\n * @param obj object to process\n * @returns object with updated values\n */\nexport const removeNilValues = (obj: Record<string | number, unknown>) => {\n if (!obj) {\n return {};\n }\n\n return Object.keys(obj).reduce((acc, key) => {\n const value = obj[key];\n const isNil = value === undefined || value === null;\n return isNil ? acc : { ...acc, [key]: value };\n }, {});\n};\n\nexport const convertObjectToFormData = (formParams: Record<string | number, string | Blob>): FormData => {\n const formData = new FormData();\n\n for (const key in formParams) {\n if (Object.prototype.hasOwnProperty.call(formParams, key)) {\n const value = formParams[key];\n if (value instanceof File) {\n formData.append(key, value, value.name);\n } else {\n formData.append(key, value);\n }\n }\n }\n\n return formData;\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { HttpParameterCodec } from '@angular/common/http';\n\n// The default implementation of HttpParameterCodec from angular\n// does not encode some special characters like + with is causing issues with the alfresco js API and returns 500 error\n\nexport class AlfrescoApiParamEncoder implements HttpParameterCodec {\n encodeKey(key: string): string {\n return encodeURIComponent(key);\n }\n\n encodeValue(value: string): string {\n return encodeURIComponent(value);\n }\n\n decodeKey(key: string): string {\n return decodeURIComponent(key);\n }\n\n decodeValue(value: string): string {\n return decodeURIComponent(value);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class AlfrescoApiResponseError extends Error {\n public name = 'AlfrescoApiResponseError';\n\n constructor(msg: string, public status: number, public response: Record<string, any>) {\n super(msg);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SHOULD_ADD_AUTH_TOKEN } from '@alfresco/adf-core/auth';\nimport { Emitters as JsApiEmitters, HttpClient as JsApiHttpClient } from '@alfresco/js-api';\nimport { HttpClient, HttpContext, HttpErrorResponse, HttpEvent, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, of, Subject, throwError } from 'rxjs';\nimport { catchError, map, takeUntil } from 'rxjs/operators';\nimport {\n convertObjectToFormData,\n getQueryParamsWithCustomEncoder,\n isBlobResponse,\n isConstructor,\n isHttpResponseEvent,\n isHttpUploadProgressEvent,\n removeNilValues\n} from './alfresco-api/alfresco-api.utils';\nimport { AlfrescoApiParamEncoder } from './alfresco-api/alfresco-api.param-encoder';\nimport { AlfrescoApiResponseError } from './alfresco-api/alfresco-api.response-error';\nimport { Constructor } from './types';\nimport { RequestOptions, SecurityOptions } from './interfaces';\nimport ee, { Emitter } from 'event-emitter';\n\nexport interface Emitters {\n readonly eventEmitter: Emitter;\n readonly apiClientEmitter: Emitter;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AdfHttpClient implements ee.Emitter, JsApiHttpClient {\n on: ee.EmitterMethod;\n off: ee.EmitterMethod;\n once: ee.EmitterMethod;\n _disableCsrf: boolean;\n\n emit: (type: string, ...args: any[]) => void;\n\n get disableCsrf(): boolean {\n return this._disableCsrf;\n }\n\n set disableCsrf(disableCsrf: boolean) {\n this._disableCsrf = disableCsrf;\n }\n\n private defaultSecurityOptions = {\n withCredentials: true,\n isBpmRequest: false,\n authentications: {},\n defaultHeaders: {}\n };\n\n constructor(private httpClient: HttpClient) {\n ee(this);\n }\n\n setDefaultSecurityOption(options: any) {\n this.defaultSecurityOptions = this.merge(this.defaultSecurityOptions, options);\n }\n\n merge(...objects): any {\n const result = {};\n\n objects.forEach((source) => {\n Object.keys(source).forEach((prop) => {\n if (prop in result && Array.isArray(result[prop])) {\n result[prop] = result[prop].concat(source[prop]);\n } else if (prop in result && typeof result[prop] === 'object') {\n result[prop] = this.merge(result[prop], source[prop]);\n } else {\n result[prop] = source[prop];\n }\n });\n });\n\n return result;\n }\n\n request<T = any>(url: string, options?: RequestOptions, sc: SecurityOptions = this.defaultSecurityOptions, emitters?: JsApiEmitters): Promise<T> {\n const body = AdfHttpClient.getBody(options);\n const params = getQueryParamsWithCustomEncoder(options.queryParams, new AlfrescoApiParamEncoder());\n const responseType = AdfHttpClient.getResponseType(options);\n const context = new HttpContext().set(SHOULD_ADD_AUTH_TOKEN, true);\n const security: SecurityOptions = { ...this.defaultSecurityOptions, ...sc };\n const headers = this.getHeaders(options);\n if (!emitters) {\n emitters = this.getEventEmitters();\n }\n\n const request = this.httpClient.request(options.httpMethod, url, {\n context,\n ...(body && { body }),\n ...(responseType && { responseType }),\n ...security,\n ...(params && { params }),\n headers,\n observe: 'events',\n reportProgress: true\n });\n\n return this.requestWithLegacyEventEmitters<T>(request, emitters, options.returnType);\n }\n\n post<T = any>(url: string, options?: RequestOptions, sc?: SecurityOptions, emitters?: JsApiEmitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'POST' }, sc, emitters);\n }\n\n put<T = any>(url: string, options?: RequestOptions, sc?: SecurityOptions, emitters?: JsApiEmitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'PUT' }, sc, emitters);\n }\n\n get<T = any>(url: string, options?: RequestOptions, sc?: SecurityOptions, emitters?: JsApiEmitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'GET' }, sc, emitters);\n }\n\n delete<T = void>(url: string, options?: RequestOptions, sc?: SecurityOptions, emitters?: JsApiEmitters): Promise<T> {\n return this.request<T>(url, { ...options, httpMethod: 'DELETE' }, sc, emitters);\n }\n\n private addPromiseListeners<T = any>(promise: Promise<T>, eventEmitter: any) {\n const eventPromise = Object.assign(promise, {\n on() {\n // eslint-disable-next-line prefer-spread, prefer-rest-params\n eventEmitter.on.apply(eventEmitter, arguments);\n return this;\n },\n once() {\n // eslint-disable-next-line prefer-spread, prefer-rest-params\n eventEmitter.once.apply(eventEmitter, arguments);\n return this;\n },\n emit() {\n // eslint-disable-next-line prefer-spread, prefer-rest-params\n eventEmitter.emit.apply(eventEmitter, arguments);\n return this;\n },\n off() {\n // eslint-disable-next-line prefer-spread, prefer-rest-params\n eventEmitter.off.apply(eventEmitter, arguments);\n return this;\n }\n });\n\n return eventPromise;\n }\n\n private getEventEmitters(): Emitters {\n const apiClientEmitter = {\n on: this.on.bind(this),\n off: this.off.bind(this),\n once: this.once.bind(this),\n emit: this.emit.bind(this)\n };\n\n return {\n apiClientEmitter,\n eventEmitter: ee({})\n };\n }\n\n private requestWithLegacyEventEmitters<T = any>(request$: Observable<HttpEvent<T>>, emitters: JsApiEmitters, returnType: any): Promise<T> {\n const abort$ = new Subject<void>();\n const { eventEmitter, apiClientEmitter } = emitters;\n\n const promise = request$\n .pipe(\n map((res) => {\n if (isHttpUploadProgressEvent(res)) {\n const percent = Math.round((res.loaded / res.total) * 100);\n eventEmitter.emit('progress', { loaded: res.loaded, total: res.total, percent });\n }\n\n if (isHttpResponseEvent(res)) {\n eventEmitter.emit('success', res.body);\n return AdfHttpClient.deserialize(res, returnType);\n }\n }),\n catchError((err: HttpErrorResponse): Observable<AlfrescoApiResponseError> => {\n // since we can't always determinate ahead of time if the response is going to be xml or plain text response\n // we need to handle false positive cases here.\n\n if (err.status === 200) {\n eventEmitter.emit('success', err.error.text);\n return of(err.error.text);\n }\n\n eventEmitter.emit('error', err);\n apiClientEmitter.emit('error', { ...err, response: { req: err } });\n\n if (err.status === 401) {\n eventEmitter.emit('unauthorized');\n apiClientEmitter.emit('unauthorized');\n }\n\n // for backwards compatibility we need to convert it to error class as the HttpErrorResponse only implements Error interface, not extending it,\n // and we need to be able to correctly pass instanceof Error conditions used inside repository\n // we also need to pass error as Stringify string as we are detecting statusCodes using JSON.parse(error.message) in some places\n const msg = typeof err.error === 'string' ? err.error : JSON.stringify(err.error);\n\n // for backwards compatibility to handle cases in code where we try read response.error.response.body;\n\n const error = {\n ...err,\n body: err.error\n };\n\n const alfrescoApiError = new AlfrescoApiResponseError(msg, err.status, error);\n return throwError(alfrescoApiError);\n }),\n takeUntil(abort$)\n )\n .toPromise();\n\n (promise as any).abort = function () {\n eventEmitter.emit('abort');\n abort$.next();\n abort$.complete();\n return this;\n };\n\n return this.addPromiseListeners(promise, eventEmitter);\n }\n\n private static getBody(options: RequestOptions): any {\n const contentType = options.contentType ? options.contentType : AdfHttpClient.jsonPreferredMime(options.contentTypes);\n const isFormData = contentType === 'multipart/form-data';\n const isFormUrlEncoded = contentType === 'application/x-www-form-urlencoded';\n const body = options.bodyParam;\n\n if (isFormData) {\n return convertObjectToFormData(options.formParams);\n }\n\n if (isFormUrlEncoded) {\n return new HttpParams({ fromObject: removeNilValues(options.formParams) });\n }\n\n return body;\n }\n\n private getHeaders(options: RequestOptions): HttpHeaders {\n const contentType = options.contentType || AdfHttpClient.jsonPreferredMime(options.contentTypes);\n const accept = options.accept || AdfHttpClient.jsonPreferredMime(options.accepts);\n\n const optionsHeaders = {\n ...options.headerParams,\n ...(accept && { Accept: accept }),\n ...(contentType && { 'Content-Type': contentType })\n };\n\n if (!this.disableCsrf) {\n this.setCsrfToken(optionsHeaders);\n }\n\n return new HttpHeaders(optionsHeaders);\n }\n\n /**\n * Chooses a content type from the given array, with JSON preferred; i.e. return JSON if included, otherwise return the first.\n *\n * @param contentTypes a contentType array\n * @returns The chosen content type, preferring JSON.\n */\n private static jsonPreferredMime(contentTypes: readonly string[]): string {\n if (!contentTypes?.length) {\n return 'application/json';\n }\n\n for (let i = 0; i < contentTypes.length; i++) {\n if (AdfHttpClient.isJsonMime(contentTypes[i])) {\n return contentTypes[i];\n }\n }\n return contentTypes[0];\n }\n\n /**\n * Checks whether the given content type represents JSON.<br>\n * JSON content type examples:<br>\n * <ul>\n * <li>application/json</li>\n * <li>application/json; charset=UTF8</li>\n * <li>APPLICATION/JSON</li>\n * </ul>\n *\n * @param contentType The MIME content type to check.\n * @returns <code>true</code> if <code>contentType</code> represents JSON, otherwise <code>false</code>.\n */\n private static isJsonMime(contentType: string): boolean {\n return Boolean(contentType?.match(/^application\\/json(;.*)?$/i));\n }\n\n private setCsrfToken(optionsHeaders: any) {\n const token = this.createCSRFToken();\n optionsHeaders['X-CSRF-TOKEN'] = token;\n\n try {\n document.cookie = 'CSRF-TOKEN=' + token + ';path=/';\n } catch {\n /* continue regardless of error */\n }\n }\n\n private createCSRFToken(a?: any): string {\n const randomValue = AdfHttpClient.getSecureRandomValue();\n return a ? (a ^ ((randomValue * 16) >> (a / 4))).toString(16) : ([1e16] + (1e16).toString()).replace(/[01]/g, this.createCSRFToken);\n }\n\n private static getSecureRandomValue(): number {\n const max = Math.pow(2, 32);\n return window.crypto.getRandomValues(new Uint32Array(1))[0] / max;\n }\n\n private static getResponseType(options: RequestOptions): 'blob' | 'json' | 'text' {\n const isBlobType = options.returnType?.toString().toLowerCase() === 'blob' || options.responseType?.toString().toLowerCase() === 'blob';\n\n if (isBlobType) {\n return 'blob';\n }\n\n if (options.returnType === 'String') {\n return 'text';\n }\n\n return 'json';\n }\n\n /**\n * Deserialize an HTTP response body into a value of the specified type.\n *\n * @param response response object\n * @param returnType return type\n * @returns deserialized object\n */\n private static deserialize<T>(response: HttpResponse<T>, returnType?: Constructor<unknown> | 'blob'): any {\n if (response === null) {\n return null;\n }\n\n const body = response.body;\n\n if (!returnType) {\n // for backwards compatibility we need to return empty string instead of null,\n // to avoid issues when accessing null response would break application [C309878]\n // cannot read property 'entry' of null in cases like\n // return this.post(apiUrl, saveFormRepresentation).pipe(map((res: any) => res.entry))\n\n return body !== null ? body : '';\n }\n\n if (isBlobResponse(response, returnType)) {\n return AdfHttpClient.deserializeBlobResponse(response);\n }\n\n if (!isConstructor(returnType)) {\n return body;\n }\n\n if (Array.isArray(body)) {\n return body.map((element) => new returnType(element));\n }\n\n return new returnType(body);\n }\n\n private static deserializeBlobResponse(response: HttpResponse<Blob>) {\n return new Blob([response.body], { type: response.headers.get('Content-Type') });\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface SecurityOptions {\n readonly withCredentials?: boolean;\n readonly authentications?: Authentication;\n readonly defaultHeaders?: Record<string, string>;\n}\n\nexport interface Oauth2 {\n refreshToken?: string;\n accessToken?: string;\n}\n\nexport interface BasicAuth {\n username?: string;\n password?: string;\n ticket?: string;\n}\n\nexport interface Authentication {\n basicAuth?: BasicAuth;\n oauth2?: Oauth2;\n cookie?: string;\n type?: string;\n}\n\nexport interface RequestOptions {\n httpMethod?: string;\n pathParams?: any;\n queryParams?: any;\n headerParams?: any;\n formParams?: any;\n bodyParam?: any;\n returnType?: any;\n responseType?: string;\n accepts?: string[];\n contentTypes?: string[];\n readonly accept?: string;\n readonly contentType?: string;\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './lib/types';\nexport * from './lib/adf-http-client.service';\nexport * from './lib/interfaces';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"alfresco-adf-core-feature-flags.mjs","sources":["../../../../lib/core/feature-flags/src/lib/interfaces/features.interface.ts","../../../../lib/core/feature-flags/src/lib/components/feature-override-indicator.component.ts","../../../../lib/core/feature-flags/src/lib/components/flags/flags.component.ts","../../../../lib/core/feature-flags/src/lib/components/flags/flags.component.html","../../../../lib/core/feature-flags/src/lib/components/feature-flags-wrapper.ts","../../../../lib/core/feature-flags/src/lib/directives/features.directive.ts","../../../../lib/core/feature-flags/src/lib/directives/not-features.directive.ts","../../../../lib/core/feature-flags/src/lib/guards/is-feature-on.guard.ts","../../../../lib/core/feature-flags/src/lib/guards/is-feature-off.guard.ts","../../../../lib/core/feature-flags/src/lib/guards/is-flags-override-on.guard.ts","../../../../lib/core/feature-flags/src/lib/services/dummy-features.service.ts","../../../../lib/core/feature-flags/src/lib/providers/dummy-feature-flags.provider.ts","../../../../lib/core/feature-flags/src/lib/services/flagset.parser.ts","../../../../lib/core/feature-flags/src/lib/services/storage-features.service.ts","../../../../lib/core/feature-flags/src/lib/services/debug-features.service.ts","../../../../lib/core/feature-flags/src/lib/services/qa-features.helper.ts","../../../../lib/core/feature-flags/src/lib/providers/debug-feature-flags.provider.ts","../../../../lib/core/feature-flags/src/lib/mocks/features-service-mock.factory.ts","../../../../lib/core/feature-flags/src/index.ts","../../../../lib/core/feature-flags/src/alfresco-adf-core-feature-flags.ts"],"sourcesContent":["/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport const FeaturesServiceConfigToken = new InjectionToken<any>('FeatureServiceConfigToken');\nexport const FeaturesServiceToken = new InjectionToken<IFeaturesService>('FeaturesService');\nexport const WritableFeaturesServiceToken = new InjectionToken<IFeaturesService & IWritableFeaturesService>('WritableFeaturesServiceToken');\nexport const WritableFeaturesServiceConfigToken = new InjectionToken<WritableFeaturesServiceConfig>('WritableFeaturesServiceConfigToken');\nexport const OverridableFeaturesServiceToken = new InjectionToken<IFeaturesService>('OverridableFeaturesServiceToken');\nexport const FlagsOverrideToken = new InjectionToken<boolean>('FlagsOverrideToken');\n\nexport interface WritableFeaturesServiceConfig {\n storageKey?: string;\n}\nexport interface QaFeaturesHelperConfig {\n helperExposeKeyOnDocument?: string;\n}\n\nexport interface FlagChangeset {\n [key: string]: {\n current: any;\n previous: any;\n };\n}\n\nexport interface WritableFlagChangeset {\n [key: string]: {\n current: any;\n previous: any;\n fictive?: boolean;\n };\n}\n\nexport interface FlagSet {\n [key: string]: any;\n}\n\nexport interface IFeaturesService<T = FlagChangeset> {\n init(): Observable<T>;\n isOn$(key: string): Observable<boolean>;\n isOff$(key: string): Observable<boolean>;\n getFlags$(): Observable<T>;\n}\n\nexport interface IWritableFeaturesService {\n setFlag(key: string, value: any): void;\n resetFlags(flags: FlagSet): void;\n removeFlag(key: string): void;\n mergeFlags(flags: FlagChangeset): void;\n}\n\nexport type IDebugFeaturesService = Omit<IFeaturesService<WritableFlagChangeset>, 'init'> & {\n enable(on: boolean): void;\n isEnabled$(): Observable<boolean>;\n resetFlags(flags: FlagSet): void;\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FeaturesServiceToken, IDebugFeaturesService } from '../interfaces/features.interface';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'adf-feature-flags-override-indicator',\n imports: [CommonModule],\n styles: [\n `\n .adf-activity-indicator {\n font-size: 0.885rem;\n }\n `,\n `\n .adf-activity-indicator .small {\n font-size: 0.7rem;\n }\n `,\n `\n .adf-activity-indicator .large {\n font-size: 1.2rem;\n }\n `\n ],\n template: `\n <span [ngClass]=\"['activity-indicator', size]\" *ngIf=\"isEnabled; else inActive\">🟢</span>\n <ng-template #inActive><span [ngClass]=\"['activity-indicator', size]\">🔴</span></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FlagsOverrideComponent {\n isEnabled = false;\n\n @Input()\n size: 'small' | 'medium' | 'large' = 'medium';\n\n constructor(\n @Inject(FeaturesServiceToken)\n private featuresService: IDebugFeaturesService,\n changeDetectorRef: ChangeDetectorRef\n ) {\n if (this.featuresService.isEnabled$) {\n this.featuresService\n .isEnabled$()\n .pipe(takeUntilDestroyed())\n .subscribe((isEnabled) => {\n this.isEnabled = isEnabled;\n changeDetectorRef.markForCheck();\n });\n }\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, Inject, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n FeaturesServiceToken,\n IDebugFeaturesService,\n IFeaturesService,\n IWritableFeaturesService,\n WritableFeaturesServiceToken,\n WritableFlagChangeset\n} from '../../interfaces/features.interface';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { debounceTime, map, take, tap } from 'rxjs/operators';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { FlagsOverrideComponent } from '../feature-override-indicator.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'adf-feature-flags-overrides',\n imports: [\n FlagsOverrideComponent,\n CommonModule,\n FormsModule,\n MatTableModule,\n MatSlideToggleModule,\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatInputModule,\n MatDialogModule,\n TranslatePipe\n ],\n templateUrl: './flags.component.html',\n styleUrls: ['./flags.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FlagsComponent {\n displayedColumns: string[] = ['icon', 'flag', 'value'];\n flags$: Observable<{ fictive: boolean; flag: string; value: any }[]>;\n isEnabled = false;\n\n inputValue = '';\n inputValue$ = new BehaviorSubject<string>('');\n showPlusButton$!: Observable<boolean>;\n writableFlagChangeset: WritableFlagChangeset = {};\n constructor(\n @Inject(FeaturesServiceToken)\n private featuresService: IDebugFeaturesService & IFeaturesService<WritableFlagChangeset>,\n @Inject(WritableFeaturesServiceToken)\n private writableFeaturesService: IWritableFeaturesService\n ) {\n if (this.featuresService.isEnabled$) {\n this.featuresService\n .isEnabled$()\n .pipe(takeUntilDestroyed())\n .subscribe((isEnabled) => {\n this.isEnabled = isEnabled;\n });\n }\n\n const flags$ = this.featuresService.getFlags$().pipe(\n tap((flags) => (this.writableFlagChangeset = flags)),\n map((flags) =>\n Object.keys(flags).map((key) => ({\n flag: key,\n value: flags[key].current,\n fictive: flags[key]?.fictive ?? false\n }))\n )\n );\n\n const debouncedInputValue$ = this.inputValue$.pipe(debounceTime(100));\n\n this.flags$ = combineLatest([flags$, debouncedInputValue$]).pipe(\n map(([flags, inputValue]) => {\n if (!inputValue) {\n return flags;\n }\n\n return flags.filter((flag) => flag.flag.includes(inputValue));\n })\n );\n\n this.showPlusButton$ = this.flags$.pipe(\n map((filteredFlags) => this.isEnabled && filteredFlags.length === 0 && this.inputValue.trim().length > 0)\n );\n }\n\n protected onChange(flag: string, value: boolean) {\n this.writableFeaturesService.setFlag(flag, value);\n }\n\n protected onEnable(value: boolean) {\n if (value) {\n this.writableFeaturesService.mergeFlags(this.writableFlagChangeset);\n }\n\n this.featuresService.enable(value);\n }\n\n protected onInputChange(text: string) {\n this.inputValue$.next(text);\n }\n\n protected onClearInput() {\n this.inputValue = '';\n this.inputValue$.next('');\n }\n\n protected onAdd(event: KeyboardEvent) {\n this.showPlusButton$.pipe(take(1)).subscribe((showPlusButton) => {\n if (showPlusButton && event.key === 'Enter' && event.shiftKey) {\n this.writableFeaturesService.setFlag(this.inputValue, false);\n }\n });\n }\n\n protected onAddButtonClick() {\n this.writableFeaturesService.setFlag(this.inputValue, false);\n }\n\n protected onDelete(flag: string) {\n this.writableFeaturesService.removeFlag(flag);\n }\n}\n","<mat-toolbar class=\"adf-feature-flags-overrides-header\">\n <div class=\"adf-feature-flags-overrides-header-text\" tabindex=\"0\">\n <adf-feature-flags-override-indicator\n class=\"adf-activity-indicator\"\n size='large' />\n <span>{{ \"CORE.FEATURE-FLAGS.OVERRIDES\" | translate }}</span>\n </div>\n <mat-slide-toggle\n [checked]=\"isEnabled\"\n (change)=\"onEnable($event.checked)\" />\n <button\n class=\"adf-feature-flags-overrides-header-close\"\n mat-icon-button\n mat-dialog-close>\n <mat-icon>close</mat-icon>\n </button>\n</mat-toolbar>\n\n<ng-container *ngIf=\"flags$ | async as flags\">\n <table mat-table [dataSource]=\"flags\" class=\"adf-feature-flags-overrides-table mat-elevation-z0\">\n <ng-container matColumnDef=\"icon\">\n <th mat-header-cell class=\"adf-icon-col adf-header-cell\" *matHeaderCellDef>\n <mat-icon class=\"material-icons-outlined adf-search-icon\">search</mat-icon>\n </th>\n <td mat-cell class=\"adf-icon-col\" *matCellDef=\"let element\">\n <button mat-icon-button *ngIf=\"element.fictive; else flagFromApi\" class=\"adf-fictive-flag-button\" (click)=\"onDelete(element.flag)\">\n <mat-icon class=\"material-icons-outlined adf-custom-flag-icon\" fontIcon=\"memory\" />\n <mat-icon class=\"material-icons-outlined adf-trash-icon\" fontIcon=\"delete\" />\n </button>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"flag\">\n <th mat-header-cell class=\"flag-col header-cell\" *matHeaderCellDef>\n <mat-form-field class=\"adf-flag-form-field\" appearance=\"fill\" floatLabel=\"auto\">\n <input class=\"flag-input\" [placeholder]=\"(isEnabled ? 'CORE.FEATURE-FLAGS.FILTER_OR_ADD_NEW' : 'CORE.FEATURE-FLAGS.FILTER') | translate\" matInput type=\"text\" [(ngModel)]=\"inputValue\" (keyup)=\"onInputChange(inputValue)\" (keypress)=\"onAdd($event)\">\n </mat-form-field>\n </th>\n <td mat-cell class=\"flag-col\" *matCellDef=\"let element\">{{ element.flag }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"value\">\n <th mat-header-cell class=\"adf-val-col header-cell\" *matHeaderCellDef>\n <div class=\"adf-input-field-buttons-container\">\n <button *ngIf=\"showPlusButton$ | async\" mat-icon-button title=\"{{'CORE.FEATURE-FLAGS.ADD_NEW' | translate}}\" color=\"accent\" (click)=\"onAddButtonClick()\">\n <mat-icon class=\"material-icons-outlined\" fontIcon=\"add_circle\" />\n </button>\n <button *ngIf=\"inputValue\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"onClearInput()\" class=\"adf-clear-button\">\n <mat-icon>cancel</mat-icon>\n </button>\n </div>\n </th>\n <td mat-cell class=\"adf-val-col\" *matCellDef=\"let element\">\n <mat-slide-toggle\n [checked]=\"element.value\"\n (change)=\"onChange(element.flag, $event.checked)\"\n [disabled]=\"!isEnabled\" />\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n</ng-container>\n\n<ng-template #flagFromApi>\n <mat-icon class=\"material-icons-outlined\">cloud</mat-icon>\n</ng-template>\n\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component } from '@angular/core';\nimport { FlagsComponent } from './flags/flags.component';\n\n@Component({\n selector: 'adf-feature-flags-wrapper',\n imports: [FlagsComponent],\n template: `\n <div class=\"adf-feature-flags-wrapper\">\n <adf-feature-flags-overrides />\n </div>\n `,\n styles: [\n `\n .adf-feature-flags-wrapper {\n width: 100%;\n height: 100%;\n }\n `\n ]\n})\nexport class FeatureFlagsWrapperComponent {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Directive, Inject, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { FeaturesServiceToken, FlagChangeset, IFeaturesService } from '../interfaces/features.interface';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n /* eslint-disable-next-line @angular-eslint/directive-selector */\n selector: '[adfForFeatures]'\n})\nexport class FeaturesDirective {\n private hasView = false;\n private inputUpdate$ = new BehaviorSubject([] as string[]);\n\n @Input()\n set adfForFeatures(feature: string[] | string) {\n this.inputUpdate$.next(Array.isArray(feature) ? feature : [feature]);\n }\n\n constructor(\n @Inject(FeaturesServiceToken) private featuresService: IFeaturesService,\n private templateRef: TemplateRef<any>,\n private viewContainer: ViewContainerRef\n ) {\n combineLatest([this.featuresService.getFlags$(), this.inputUpdate$])\n .pipe(takeUntilDestroyed())\n .subscribe(([flags, features]: any) => this.updateView(flags, features));\n }\n\n private updateView(flags: FlagChangeset, features: string[]) {\n const shouldShow = features.every((feature) => flags[feature]?.current);\n\n if (shouldShow && !this.hasView) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView = true;\n } else if (!shouldShow && this.hasView) {\n this.viewContainer.clear();\n this.hasView = false;\n }\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Directive, Inject, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { FeaturesServiceToken, FlagChangeset, IFeaturesService } from '../interfaces/features.interface';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n /* eslint-disable-next-line @angular-eslint/directive-selector */\n selector: '[adfNotForFeatures]'\n})\nexport class NotFeaturesDirective {\n private hasView = false;\n private inputUpdate$ = new BehaviorSubject([] as string[]);\n\n @Input()\n set adfNotForFeatures(feature: string[] | string) {\n this.inputUpdate$.next(Array.isArray(feature) ? feature : [feature]);\n }\n\n constructor(\n @Inject(FeaturesServiceToken) private featuresService: IFeaturesService,\n private templateRef: TemplateRef<any>,\n private viewContainer: ViewContainerRef\n ) {\n combineLatest([this.featuresService.getFlags$(), this.inputUpdate$])\n .pipe(takeUntilDestroyed())\n .subscribe(([flags, features]: any) => this.updateView(flags, features));\n }\n\n private updateView(flags: FlagChangeset, features: string[]) {\n const shouldShow = features.every((feature) => !flags[feature]?.current);\n\n if (shouldShow && !this.hasView) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView = true;\n } else if (!shouldShow && this.hasView) {\n this.viewContainer.clear();\n this.hasView = false;\n }\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Inject, Injectable, inject } from '@angular/core';\nimport { FeaturesServiceToken, IFeaturesService } from '../interfaces/features.interface';\nimport { Route } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nexport const isFeatureOn = (flag: string) => () => inject(FeaturesServiceToken).isOn$(flag);\n\n@Injectable({ providedIn: 'root' })\nexport class IsFeatureOn {\n constructor(@Inject(FeaturesServiceToken) private featuresServiceToken: IFeaturesService) {}\n\n canMatch(route: Route): Observable<boolean> {\n return this.featuresServiceToken.isOn$(route?.data?.['feature']);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Inject, Injectable, inject } from '@angular/core';\nimport { FeaturesServiceToken, IFeaturesService } from '../interfaces/features.interface';\nimport { Route } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nexport const isFeatureOff = (flag: string) => () => inject(FeaturesServiceToken).isOff$(flag);\n\n@Injectable({ providedIn: 'root' })\nexport class IsFeatureOff {\n constructor(@Inject(FeaturesServiceToken) private featuresServiceToken: IFeaturesService) {}\n\n canMatch(route: Route): Observable<boolean> {\n return this.featuresServiceToken.isOff$(route?.data?.['feature']);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Inject, Injectable, Optional, inject } from '@angular/core';\nimport { FlagsOverrideToken } from '../interfaces/features.interface';\n\nexport const isFlagsOverrideOn = () => () => inject(FlagsOverrideToken) ?? false;\n\n@Injectable({ providedIn: 'root' })\nexport class IsFlagsOverrideOn {\n constructor(@Optional() @Inject(FlagsOverrideToken) private devToolsToken: boolean) {}\n\n canMatch(): boolean {\n return !!this.devToolsToken;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { IFeaturesService, FlagChangeset } from '../interfaces/features.interface';\n\n@Injectable()\nexport class DummyFeaturesService implements IFeaturesService {\n init(): Observable<FlagChangeset> {\n return of();\n }\n\n isOn$(): Observable<boolean> {\n return of(false);\n }\n\n isOff$(_key: string): Observable<boolean> {\n return of(true);\n }\n\n getFlags$(): Observable<FlagChangeset> {\n return of({});\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { IsFlagsOverrideOn } from '../guards/is-flags-override-on.guard';\nimport { IsFeatureOn } from '../guards/is-feature-on.guard';\nimport { IsFeatureOff } from '../guards/is-feature-off.guard';\nimport { FeaturesServiceToken, FlagsOverrideToken } from '../interfaces/features.interface';\nimport { DummyFeaturesService } from '../services/dummy-features.service';\n\n/**\n * Provides the dummy feature flags.\n *\n * @returns Environment Providers for Feature Flags.\n */\nexport function provideDummyFeatureFlags() {\n return [\n { provide: FeaturesServiceToken, useClass: DummyFeaturesService },\n { provide: FlagsOverrideToken, useValue: false },\n IsFeatureOn,\n IsFeatureOff,\n IsFlagsOverrideOn\n ];\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WritableFlagChangeset } from '../interfaces/features.interface';\n\ninterface SerializedFlagSet {\n [key: string]: {\n current: boolean;\n fictive?: boolean;\n };\n}\n\nexport class FlagSetParser {\n static serialize(flags: WritableFlagChangeset): SerializedFlagSet {\n return Object.keys(flags).reduce(\n (acc, key) => ({\n ...acc,\n [key]: {\n current: flags[key].current,\n fictive: flags[key].fictive\n }\n }),\n {}\n );\n }\n\n static deserialize(serializedFlags: SerializedFlagSet): WritableFlagChangeset {\n return Object.keys(serializedFlags).reduce(\n (acc, key) => ({\n ...acc,\n [key]: {\n current: serializedFlags[key].current,\n previous: null,\n ...(serializedFlags[key].fictive ? { fictive: true } : {})\n }\n }),\n {}\n );\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport {\n FlagChangeset,\n IFeaturesService,\n FlagSet,\n IWritableFeaturesService,\n WritableFeaturesServiceConfigToken,\n WritableFlagChangeset,\n WritableFeaturesServiceConfig\n} from '../interfaces/features.interface';\nimport { FlagSetParser } from './flagset.parser';\n\n@Injectable({ providedIn: 'root' })\nexport class StorageFeaturesService implements IFeaturesService, IWritableFeaturesService {\n private currentFlagState: WritableFlagChangeset = {};\n private readonly flags = new BehaviorSubject<WritableFlagChangeset>({});\n private readonly flags$ = this.flags.asObservable();\n private readonly initSubject = new BehaviorSubject<boolean>(false);\n\n constructor(@Optional() @Inject(WritableFeaturesServiceConfigToken) private config?: WritableFeaturesServiceConfig) {\n combineLatest({\n flags: this.flags,\n init: this.waitForInitializationToFinish()\n }).subscribe(({ flags }) => {\n this.currentFlagState = flags;\n sessionStorage.setItem(this.storageKey, JSON.stringify(FlagSetParser.serialize(flags)));\n });\n }\n\n get storageKey(): string {\n return this.config?.storageKey || 'feature-flags';\n }\n\n init(): Observable<WritableFlagChangeset> {\n const storedFlags = JSON.parse(sessionStorage.getItem(this.storageKey) || '{}');\n const initialFlagChangeSet = FlagSetParser.deserialize(storedFlags);\n this.flags.next(initialFlagChangeSet);\n this.initSubject.next(true);\n return of(initialFlagChangeSet);\n }\n\n isOn$(key: string): Observable<boolean> {\n return this.flags$.pipe(map((flags) => !!flags[key]?.current));\n }\n\n isOff$(key: string): Observable<boolean> {\n return this.flags$.pipe(map((flags) => !flags[key]?.current));\n }\n\n getFlags$(): Observable<WritableFlagChangeset> {\n return this.flags$;\n }\n\n setFlag(key: string, value: any): void {\n let fictive = {};\n if (!this.currentFlagState[key]) {\n fictive = { fictive: true };\n } else {\n fictive = this.currentFlagState[key]?.fictive ? { fictive: true } : {};\n }\n\n this.flags.next({\n ...this.currentFlagState,\n [key]: {\n current: value,\n previous: this.currentFlagState[key]?.current ?? null,\n ...fictive\n }\n });\n }\n\n removeFlag(key: string): void {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [key]: _, ...flags } = this.currentFlagState;\n this.flags.next(flags);\n }\n\n resetFlags(flags: FlagSet): void {\n this.flags.next(\n Object.keys(flags).reduce(\n (acc, key) => ({\n ...acc,\n [key]: {\n current: flags[key],\n previous: null,\n fictive: true\n }\n }),\n {}\n )\n );\n }\n\n mergeFlags(flags: FlagChangeset): void {\n const mergedFlags: WritableFlagChangeset = Object.keys(flags).reduce((acc, key) => {\n const current = this.currentFlagState[key]?.current;\n return {\n ...acc,\n [key]: {\n current: current ?? flags[key].current,\n previous: current ?? null\n }\n };\n }, {});\n\n Object.keys(this.currentFlagState)\n .filter((key) => !flags[key])\n .forEach((key) => {\n mergedFlags[key] = {\n current: this.currentFlagState[key].current,\n previous: this.currentFlagState[key].previous,\n fictive: true\n };\n });\n\n this.flags.next(mergedFlags);\n }\n\n private waitForInitializationToFinish(): Observable<boolean> {\n return this.initSubject.pipe(filter((initialized) => !!initialized));\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { BehaviorSubject, Observable, combineLatest } from 'rxjs';\nimport { filter, switchMap } from 'rxjs/operators';\nimport {\n IDebugFeaturesService,\n IFeaturesService,\n FlagChangeset,\n OverridableFeaturesServiceToken,\n WritableFeaturesServiceToken,\n WritableFeaturesServiceConfigToken,\n WritableFeaturesServiceConfig,\n FlagSet,\n IWritableFeaturesService\n} from '../interfaces/features.interface';\n\n@Injectable()\nexport class DebugFeaturesService implements IDebugFeaturesService {\n private readonly isInDebugModeSubject = new BehaviorSubject<boolean>(false);\n private readonly isInDebugMode$ = this.isInDebugModeSubject.asObservable();\n private readonly initSubject = new BehaviorSubject<boolean>(false);\n\n get storageKey(): string {\n return `${this.config?.storageKey || 'feature-flags'}-override`;\n }\n\n constructor(\n @Inject(OverridableFeaturesServiceToken) private overriddenFeaturesService: IFeaturesService,\n @Inject(WritableFeaturesServiceToken) private writableFeaturesService: IFeaturesService & IWritableFeaturesService,\n @Optional() @Inject(WritableFeaturesServiceConfigToken) private config?: WritableFeaturesServiceConfig\n ) {\n this.init();\n\n combineLatest({\n debugMode: this.isInDebugModeSubject,\n init: this.waitForInitializationToFinish()\n }).subscribe(({ debugMode }) => {\n sessionStorage.setItem(this.storageKey, JSON.stringify(debugMode));\n });\n }\n\n isOn$(key: string): Observable<boolean> {\n return this.isInDebugMode$.pipe(\n switchMap((isInDebugMode) => (isInDebugMode ? this.writableFeaturesService : this.overriddenFeaturesService).isOn$(key))\n );\n }\n\n isOff$(key: string): Observable<boolean> {\n return this.isInDebugMode$.pipe(\n switchMap((isInDebugMode) => (isInDebugMode ? this.writableFeaturesService : this.overriddenFeaturesService).isOff$(key))\n );\n }\n\n /**\n * Gets the flags as an observable.\n *\n * @returns the observable that emits the flag changeset.\n */\n getFlags$(): Observable<FlagChangeset> {\n return this.isInDebugMode$.pipe(\n switchMap((isInDebugMode) => (isInDebugMode ? this.writableFeaturesService : this.overriddenFeaturesService).getFlags$())\n );\n }\n\n /**\n * Resets the specified flags.\n *\n * @param flags The flags to reset.\n */\n resetFlags(flags: FlagSet): void {\n this.writableFeaturesService.resetFlags(flags);\n }\n\n enable(on: boolean): void {\n this.isInDebugModeSubject.next(on);\n }\n\n isEnabled$(): Observable<boolean> {\n return this.isInDebugMode$;\n }\n\n private init() {\n const storedOverride = JSON.parse(sessionStorage.getItem(this.storageKey) || 'false');\n this.isInDebugModeSubject.next(storedOverride);\n this.initSubject.next(true);\n }\n\n private waitForInitializationToFinish(): Observable<boolean> {\n return this.initSubject.pipe(filter((initialized) => !!initialized));\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ApplicationRef, Inject, Injectable } from '@angular/core';\nimport { FeaturesServiceToken, FlagSet } from '../interfaces/features.interface';\nimport { DebugFeaturesService } from './debug-features.service';\n@Injectable()\nexport class QaFeaturesHelper {\n constructor(private applicationRef: ApplicationRef, @Inject(FeaturesServiceToken) private debugFeaturesService: DebugFeaturesService) {}\n\n isOn(key: string): boolean {\n let isOn = false;\n this.debugFeaturesService.isOn$(key).subscribe((on) => {\n isOn = on;\n });\n\n return isOn;\n }\n\n resetFlags(flags: FlagSet): void {\n this.debugFeaturesService.resetFlags(flags);\n this.applicationRef.tick();\n }\n\n enable(): void {\n this.debugFeaturesService.enable(true);\n this.applicationRef.tick();\n }\n\n disable(): void {\n this.debugFeaturesService.enable(false);\n this.applicationRef.tick();\n }\n\n isEnabled(): boolean {\n let enabled = false;\n this.debugFeaturesService.isEnabled$().subscribe((isEnabled) => {\n enabled = isEnabled;\n });\n return enabled;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { inject, provideAppInitializer } from '@angular/core';\nimport {\n FlagsOverrideToken,\n FeaturesServiceToken,\n QaFeaturesHelperConfig,\n WritableFeaturesServiceConfig,\n WritableFeaturesServiceConfigToken,\n WritableFeaturesServiceToken,\n IFeaturesService\n} from '../interfaces/features.interface';\nimport { StorageFeaturesService } from '../services/storage-features.service';\nimport { DebugFeaturesService } from '../services/debug-features.service';\nimport { QaFeaturesHelper } from '../services/qa-features.helper';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n *\n * @param config Configuration for the Feature Flags\n * @returns Environment Providers for Feature Flags\n */\nexport function provideDebugFeatureFlags(config: WritableFeaturesServiceConfig & QaFeaturesHelperConfig) {\n return [\n { provide: FlagsOverrideToken, useValue: true },\n { provide: FeaturesServiceToken, useClass: DebugFeaturesService },\n { provide: WritableFeaturesServiceConfigToken, useValue: config },\n { provide: WritableFeaturesServiceToken, useClass: StorageFeaturesService },\n { provide: QaFeaturesHelper, useClass: QaFeaturesHelper },\n provideAppInitializer(() => {\n const initializerFn = (\n (featuresService: IFeaturesService) => () =>\n featuresService.init()\n )(inject(WritableFeaturesServiceToken));\n return initializerFn();\n }),\n provideAppInitializer(() => {\n const initializerFn = ((qaFeaturesHelper: QaFeaturesHelper, document: Document) => () => {\n document[config.helperExposeKeyOnDocument ?? 'featureOverrides'] = qaFeaturesHelper;\n })(inject(QaFeaturesHelper), inject(DOCUMENT));\n return initializerFn();\n })\n ];\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { of } from 'rxjs';\nimport { FeaturesServiceToken, FlagChangeset, IFeaturesService } from '../interfaces/features.interface';\n\nexport interface MockFeatureFlags {\n [key: string]: boolean;\n}\n\nconst assertFeatureFlag = (flagChangeset: FlagChangeset, key: string): void => {\n const flagChangesetValue = flagChangeset[key];\n\n if (flagChangesetValue === undefined) {\n throw new Error(\n `ERROR FEATURE-FLAG\\n'${key}' feature is not mocked, please mock '${key}' using '${provideMockFeatureFlags.name}' helper in your test\\n`\n );\n }\n};\n\nconst mockFeaturesService = (flagChangeset: FlagChangeset): IFeaturesService => ({\n init: () => of(flagChangeset),\n isOn$: (key) => {\n assertFeatureFlag(flagChangeset, key);\n return of(flagChangeset[key].current);\n },\n isOff$: (key) => {\n assertFeatureFlag(flagChangeset, key);\n return of(!flagChangeset[key].current);\n },\n getFlags$: () => of(flagChangeset)\n});\n\nconst arrayToFlagChangeset = (featureFlags: string[]): FlagChangeset => {\n const flagChangeset: FlagChangeset = {};\n featureFlags.forEach((featureFlag) => {\n flagChangeset[featureFlag] = { current: true, previous: null };\n });\n return flagChangeset;\n};\n\nconst mockFeatureFlagsToFlagChangeset = (mockFeatureFlags: MockFeatureFlags) => {\n const flagChangeset: FlagChangeset = {};\n const featureFlags = Object.keys(mockFeatureFlags);\n featureFlags.forEach((featureFlag) => {\n flagChangeset[featureFlag] = { current: mockFeatureFlags[featureFlag], previous: null };\n });\n return flagChangeset;\n};\n\nexport const provideMockFeatureFlags = (featureFlag: MockFeatureFlags | string | string[]) => {\n if (typeof featureFlag === 'string') {\n featureFlag = [featureFlag];\n }\n\n const flagChangeset = Array.isArray(featureFlag) ? arrayToFlagChangeset(featureFlag) : mockFeatureFlagsToFlagChangeset(featureFlag);\n\n return {\n provide: FeaturesServiceToken,\n useValue: mockFeaturesService(flagChangeset)\n };\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './lib/components/flags/flags.component';\nexport * from './lib/components/feature-override-indicator.component';\nexport * from './lib/components/feature-flags-wrapper';\nexport * from './lib/directives/features.directive';\nexport * from './lib/directives/not-features.directive';\nexport * from './lib/guards/is-feature-on.guard';\nexport * from './lib/guards/is-feature-off.guard';\nexport * from './lib/guards/is-flags-override-on.guard';\nexport * from './lib/providers/dummy-feature-flags.provider';\nexport * from './lib/providers/debug-feature-flags.provider';\nexport * from './lib/interfaces/features.interface';\nexport * from './lib/mocks/features-service-mock.factory';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"alfresco-adf-core-feature-flags.mjs","sources":["../../../../lib/core/feature-flags/src/lib/interfaces/features.interface.ts","../../../../lib/core/feature-flags/src/lib/components/feature-override-indicator.component.ts","../../../../lib/core/feature-flags/src/lib/components/flags/flags.component.ts","../../../../lib/core/feature-flags/src/lib/components/flags/flags.component.html","../../../../lib/core/feature-flags/src/lib/components/feature-flags-wrapper.ts","../../../../lib/core/feature-flags/src/lib/directives/features.directive.ts","../../../../lib/core/feature-flags/src/lib/directives/not-features.directive.ts","../../../../lib/core/feature-flags/src/lib/guards/is-feature-on.guard.ts","../../../../lib/core/feature-flags/src/lib/guards/is-feature-off.guard.ts","../../../../lib/core/feature-flags/src/lib/guards/is-flags-override-on.guard.ts","../../../../lib/core/feature-flags/src/lib/services/dummy-features.service.ts","../../../../lib/core/feature-flags/src/lib/providers/dummy-feature-flags.provider.ts","../../../../lib/core/feature-flags/src/lib/services/flagset.parser.ts","../../../../lib/core/feature-flags/src/lib/services/storage-features.service.ts","../../../../lib/core/feature-flags/src/lib/services/debug-features.service.ts","../../../../lib/core/feature-flags/src/lib/services/qa-features.helper.ts","../../../../lib/core/feature-flags/src/lib/providers/debug-feature-flags.provider.ts","../../../../lib/core/feature-flags/src/lib/mocks/features-service-mock.factory.ts","../../../../lib/core/feature-flags/src/index.ts","../../../../lib/core/feature-flags/src/alfresco-adf-core-feature-flags.ts"],"sourcesContent":["/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport const FeaturesServiceConfigToken = new InjectionToken<any>('FeatureServiceConfigToken');\nexport const FeaturesServiceToken = new InjectionToken<IFeaturesService>('FeaturesService');\nexport const WritableFeaturesServiceToken = new InjectionToken<IFeaturesService & IWritableFeaturesService>('WritableFeaturesServiceToken');\nexport const WritableFeaturesServiceConfigToken = new InjectionToken<WritableFeaturesServiceConfig>('WritableFeaturesServiceConfigToken');\nexport const OverridableFeaturesServiceToken = new InjectionToken<IFeaturesService>('OverridableFeaturesServiceToken');\nexport const FlagsOverrideToken = new InjectionToken<boolean>('FlagsOverrideToken');\n\nexport interface WritableFeaturesServiceConfig {\n storageKey?: string;\n}\nexport interface QaFeaturesHelperConfig {\n helperExposeKeyOnDocument?: string;\n}\n\nexport interface FlagChangeset {\n [key: string]: {\n current: any;\n previous: any;\n };\n}\n\nexport interface WritableFlagChangeset {\n [key: string]: {\n current: any;\n previous: any;\n fictive?: boolean;\n };\n}\n\nexport interface FlagSet {\n [key: string]: any;\n}\n\nexport interface IFeaturesService<T = FlagChangeset> {\n init(): Observable<T>;\n isOn$(key: string): Observable<boolean>;\n isOff$(key: string): Observable<boolean>;\n getFlags$(): Observable<T>;\n}\n\nexport interface IWritableFeaturesService {\n setFlag(key: string, value: any): void;\n resetFlags(flags: FlagSet): void;\n removeFlag(key: string): void;\n mergeFlags(flags: FlagChangeset): void;\n}\n\nexport type IDebugFeaturesService = Omit<IFeaturesService<WritableFlagChangeset>, 'init'> & {\n enable(on: boolean): void;\n isEnabled$(): Observable<boolean>;\n resetFlags(flags: FlagSet): void;\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FeaturesServiceToken, IDebugFeaturesService } from '../interfaces/features.interface';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'adf-feature-flags-override-indicator',\n imports: [CommonModule],\n styles: [\n `\n .adf-activity-indicator {\n font-size: 0.885rem;\n }\n `,\n `\n .adf-activity-indicator .small {\n font-size: 0.7rem;\n }\n `,\n `\n .adf-activity-indicator .large {\n font-size: 1.2rem;\n }\n `\n ],\n template: `\n <span [ngClass]=\"['activity-indicator', size]\" *ngIf=\"isEnabled; else inActive\">🟢</span>\n <ng-template #inActive><span [ngClass]=\"['activity-indicator', size]\">🔴</span></ng-template>\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FlagsOverrideComponent {\n isEnabled = false;\n\n @Input()\n size: 'small' | 'medium' | 'large' = 'medium';\n\n constructor(\n @Inject(FeaturesServiceToken)\n private featuresService: IDebugFeaturesService,\n changeDetectorRef: ChangeDetectorRef\n ) {\n if (this.featuresService.isEnabled$) {\n this.featuresService\n .isEnabled$()\n .pipe(takeUntilDestroyed())\n .subscribe((isEnabled) => {\n this.isEnabled = isEnabled;\n changeDetectorRef.markForCheck();\n });\n }\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ChangeDetectionStrategy, Component, Inject, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n FeaturesServiceToken,\n IDebugFeaturesService,\n IFeaturesService,\n IWritableFeaturesService,\n WritableFeaturesServiceToken,\n WritableFlagChangeset\n} from '../../interfaces/features.interface';\nimport { BehaviorSubject, combineLatest, Observable } from 'rxjs';\nimport { debounceTime, map, take, tap } from 'rxjs/operators';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatInputModule } from '@angular/material/input';\nimport { FormsModule } from '@angular/forms';\nimport { FlagsOverrideComponent } from '../feature-override-indicator.component';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'adf-feature-flags-overrides',\n imports: [\n FlagsOverrideComponent,\n CommonModule,\n FormsModule,\n MatTableModule,\n MatSlideToggleModule,\n MatToolbarModule,\n MatIconModule,\n MatButtonModule,\n MatInputModule,\n MatDialogModule,\n TranslatePipe\n ],\n templateUrl: './flags.component.html',\n styleUrls: ['./flags.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FlagsComponent {\n displayedColumns: string[] = ['icon', 'flag', 'value'];\n flags$: Observable<{ fictive: boolean; flag: string; value: any }[]>;\n isEnabled = false;\n\n inputValue = '';\n inputValue$ = new BehaviorSubject<string>('');\n showPlusButton$!: Observable<boolean>;\n writableFlagChangeset: WritableFlagChangeset = {};\n constructor(\n @Inject(FeaturesServiceToken)\n private featuresService: IDebugFeaturesService & IFeaturesService<WritableFlagChangeset>,\n @Inject(WritableFeaturesServiceToken)\n private writableFeaturesService: IWritableFeaturesService\n ) {\n if (this.featuresService.isEnabled$) {\n this.featuresService\n .isEnabled$()\n .pipe(takeUntilDestroyed())\n .subscribe((isEnabled) => {\n this.isEnabled = isEnabled;\n });\n }\n\n const flags$ = this.featuresService.getFlags$().pipe(\n tap((flags) => (this.writableFlagChangeset = flags)),\n map((flags) =>\n Object.keys(flags).map((key) => ({\n flag: key,\n value: flags[key].current,\n fictive: flags[key]?.fictive ?? false\n }))\n )\n );\n\n const debouncedInputValue$ = this.inputValue$.pipe(debounceTime(100));\n\n this.flags$ = combineLatest([flags$, debouncedInputValue$]).pipe(\n map(([flags, inputValue]) => {\n if (!inputValue) {\n return flags;\n }\n\n return flags.filter((flag) => flag.flag.includes(inputValue));\n })\n );\n\n this.showPlusButton$ = this.flags$.pipe(\n map((filteredFlags) => this.isEnabled && filteredFlags.length === 0 && this.inputValue.trim().length > 0)\n );\n }\n\n protected onChange(flag: string, value: boolean) {\n this.writableFeaturesService.setFlag(flag, value);\n }\n\n protected onEnable(value: boolean) {\n if (value) {\n this.writableFeaturesService.mergeFlags(this.writableFlagChangeset);\n }\n\n this.featuresService.enable(value);\n }\n\n onInputChange(text: string) {\n this.inputValue$.next(text);\n }\n\n onClearInput() {\n this.inputValue = '';\n this.inputValue$.next('');\n }\n\n protected onAdd(event: KeyboardEvent) {\n this.showPlusButton$.pipe(take(1)).subscribe((showPlusButton) => {\n if (showPlusButton && event.key === 'Enter' && event.shiftKey) {\n this.writableFeaturesService.setFlag(this.inputValue, false);\n }\n });\n }\n\n protected onAddButtonClick() {\n this.writableFeaturesService.setFlag(this.inputValue, false);\n }\n\n protected onDelete(flag: string) {\n this.writableFeaturesService.removeFlag(flag);\n }\n}\n","<mat-toolbar class=\"adf-feature-flags-overrides-header\">\n <div class=\"adf-feature-flags-overrides-header-text\" tabindex=\"0\">\n <adf-feature-flags-override-indicator\n class=\"adf-activity-indicator\"\n size='large' />\n <span>{{ \"CORE.FEATURE-FLAGS.OVERRIDES\" | translate }}</span>\n </div>\n <mat-slide-toggle\n [checked]=\"isEnabled\"\n (change)=\"onEnable($event.checked)\" />\n <button\n class=\"adf-feature-flags-overrides-header-close\"\n mat-icon-button\n mat-dialog-close>\n <mat-icon>close</mat-icon>\n </button>\n</mat-toolbar>\n\n<ng-container *ngIf=\"flags$ | async as flags\">\n <table mat-table [dataSource]=\"flags\" class=\"adf-feature-flags-overrides-table mat-elevation-z0\">\n <ng-container matColumnDef=\"icon\">\n <th mat-header-cell class=\"adf-icon-col adf-header-cell\" *matHeaderCellDef>\n <mat-icon class=\"material-icons-outlined adf-search-icon\">search</mat-icon>\n </th>\n <td mat-cell class=\"adf-icon-col\" *matCellDef=\"let element\">\n <button mat-icon-button *ngIf=\"element.fictive; else flagFromApi\" class=\"adf-fictive-flag-button\" (click)=\"onDelete(element.flag)\">\n <mat-icon class=\"material-icons-outlined adf-custom-flag-icon\" fontIcon=\"memory\" />\n <mat-icon class=\"material-icons-outlined adf-trash-icon\" fontIcon=\"delete\" />\n </button>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"flag\">\n <th mat-header-cell class=\"flag-col header-cell\" *matHeaderCellDef>\n <mat-form-field class=\"adf-flag-form-field\" appearance=\"fill\" floatLabel=\"auto\">\n <input class=\"flag-input\" [placeholder]=\"(isEnabled ? 'CORE.FEATURE-FLAGS.FILTER_OR_ADD_NEW' : 'CORE.FEATURE-FLAGS.FILTER') | translate\" matInput type=\"text\" [(ngModel)]=\"inputValue\" (keyup)=\"onInputChange(inputValue)\" (keypress)=\"onAdd($event)\">\n </mat-form-field>\n </th>\n <td mat-cell class=\"flag-col\" *matCellDef=\"let element\">{{ element.flag }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"value\">\n <th mat-header-cell class=\"adf-val-col header-cell\" *matHeaderCellDef>\n <div class=\"adf-input-field-buttons-container\">\n <button *ngIf=\"showPlusButton$ | async\" mat-icon-button title=\"{{'CORE.FEATURE-FLAGS.ADD_NEW' | translate}}\" color=\"accent\" (click)=\"onAddButtonClick()\">\n <mat-icon class=\"material-icons-outlined\" fontIcon=\"add_circle\" />\n </button>\n <button *ngIf=\"inputValue\" matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"onClearInput()\" class=\"adf-clear-button\">\n <mat-icon>cancel</mat-icon>\n </button>\n </div>\n </th>\n <td mat-cell class=\"adf-val-col\" *matCellDef=\"let element\">\n <mat-slide-toggle\n [checked]=\"element.value\"\n (change)=\"onChange(element.flag, $event.checked)\"\n [disabled]=\"!isEnabled\" />\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n</ng-container>\n\n<ng-template #flagFromApi>\n <mat-icon class=\"material-icons-outlined\">cloud</mat-icon>\n</ng-template>\n\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component } from '@angular/core';\nimport { FlagsComponent } from './flags/flags.component';\n\n@Component({\n selector: 'adf-feature-flags-wrapper',\n imports: [FlagsComponent],\n template: `\n <div class=\"adf-feature-flags-wrapper\">\n <adf-feature-flags-overrides />\n </div>\n `,\n styles: [\n `\n .adf-feature-flags-wrapper {\n width: 100%;\n height: 100%;\n }\n `\n ]\n})\nexport class FeatureFlagsWrapperComponent {}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Directive, Inject, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { FeaturesServiceToken, FlagChangeset, IFeaturesService } from '../interfaces/features.interface';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n /* eslint-disable-next-line @angular-eslint/directive-selector */\n selector: '[adfForFeatures]'\n})\nexport class FeaturesDirective {\n private hasView = false;\n private inputUpdate$ = new BehaviorSubject([] as string[]);\n\n @Input()\n set adfForFeatures(feature: string[] | string) {\n this.inputUpdate$.next(Array.isArray(feature) ? feature : [feature]);\n }\n\n constructor(\n @Inject(FeaturesServiceToken) private featuresService: IFeaturesService,\n private templateRef: TemplateRef<any>,\n private viewContainer: ViewContainerRef\n ) {\n combineLatest([this.featuresService.getFlags$(), this.inputUpdate$])\n .pipe(takeUntilDestroyed())\n .subscribe(([flags, features]: any) => this.updateView(flags, features));\n }\n\n private updateView(flags: FlagChangeset, features: string[]) {\n const shouldShow = features.every((feature) => flags[feature]?.current);\n\n if (shouldShow && !this.hasView) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView = true;\n } else if (!shouldShow && this.hasView) {\n this.viewContainer.clear();\n this.hasView = false;\n }\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Directive, Inject, Input, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { FeaturesServiceToken, FlagChangeset, IFeaturesService } from '../interfaces/features.interface';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n /* eslint-disable-next-line @angular-eslint/directive-selector */\n selector: '[adfNotForFeatures]'\n})\nexport class NotFeaturesDirective {\n private hasView = false;\n private inputUpdate$ = new BehaviorSubject([] as string[]);\n\n @Input()\n set adfNotForFeatures(feature: string[] | string) {\n this.inputUpdate$.next(Array.isArray(feature) ? feature : [feature]);\n }\n\n constructor(\n @Inject(FeaturesServiceToken) private featuresService: IFeaturesService,\n private templateRef: TemplateRef<any>,\n private viewContainer: ViewContainerRef\n ) {\n combineLatest([this.featuresService.getFlags$(), this.inputUpdate$])\n .pipe(takeUntilDestroyed())\n .subscribe(([flags, features]: any) => this.updateView(flags, features));\n }\n\n private updateView(flags: FlagChangeset, features: string[]) {\n const shouldShow = features.every((feature) => !flags[feature]?.current);\n\n if (shouldShow && !this.hasView) {\n this.viewContainer.createEmbeddedView(this.templateRef);\n this.hasView = true;\n } else if (!shouldShow && this.hasView) {\n this.viewContainer.clear();\n this.hasView = false;\n }\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Inject, Injectable, inject } from '@angular/core';\nimport { FeaturesServiceToken, IFeaturesService } from '../interfaces/features.interface';\nimport { Route } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nexport const isFeatureOn = (flag: string) => () => inject(FeaturesServiceToken).isOn$(flag);\n\n@Injectable({ providedIn: 'root' })\nexport class IsFeatureOn {\n constructor(@Inject(FeaturesServiceToken) private featuresServiceToken: IFeaturesService) {}\n\n canMatch(route: Route): Observable<boolean> {\n return this.featuresServiceToken.isOn$(route?.data?.['feature']);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Inject, Injectable, inject } from '@angular/core';\nimport { FeaturesServiceToken, IFeaturesService } from '../interfaces/features.interface';\nimport { Route } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nexport const isFeatureOff = (flag: string) => () => inject(FeaturesServiceToken).isOff$(flag);\n\n@Injectable({ providedIn: 'root' })\nexport class IsFeatureOff {\n constructor(@Inject(FeaturesServiceToken) private featuresServiceToken: IFeaturesService) {}\n\n canMatch(route: Route): Observable<boolean> {\n return this.featuresServiceToken.isOff$(route?.data?.['feature']);\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Inject, Injectable, Optional, inject } from '@angular/core';\nimport { FlagsOverrideToken } from '../interfaces/features.interface';\n\nexport const isFlagsOverrideOn = () => () => inject(FlagsOverrideToken) ?? false;\n\n@Injectable({ providedIn: 'root' })\nexport class IsFlagsOverrideOn {\n constructor(@Optional() @Inject(FlagsOverrideToken) private devToolsToken: boolean) {}\n\n canMatch(): boolean {\n return !!this.devToolsToken;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { Injectable } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { IFeaturesService, FlagChangeset } from '../interfaces/features.interface';\n\n@Injectable()\nexport class DummyFeaturesService implements IFeaturesService {\n init(): Observable<FlagChangeset> {\n return of();\n }\n\n isOn$(): Observable<boolean> {\n return of(false);\n }\n\n isOff$(_key: string): Observable<boolean> {\n return of(true);\n }\n\n getFlags$(): Observable<FlagChangeset> {\n return of({});\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { IsFlagsOverrideOn } from '../guards/is-flags-override-on.guard';\nimport { IsFeatureOn } from '../guards/is-feature-on.guard';\nimport { IsFeatureOff } from '../guards/is-feature-off.guard';\nimport { FeaturesServiceToken, FlagsOverrideToken } from '../interfaces/features.interface';\nimport { DummyFeaturesService } from '../services/dummy-features.service';\n\n/**\n * Provides the dummy feature flags.\n *\n * @returns Environment Providers for Feature Flags.\n */\nexport function provideDummyFeatureFlags() {\n return [\n { provide: FeaturesServiceToken, useClass: DummyFeaturesService },\n { provide: FlagsOverrideToken, useValue: false },\n IsFeatureOn,\n IsFeatureOff,\n IsFlagsOverrideOn\n ];\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { WritableFlagChangeset } from '../interfaces/features.interface';\n\ninterface SerializedFlagSet {\n [key: string]: {\n current: boolean;\n fictive?: boolean;\n };\n}\n\nexport class FlagSetParser {\n static serialize(flags: WritableFlagChangeset): SerializedFlagSet {\n return Object.keys(flags).reduce(\n (acc, key) => ({\n ...acc,\n [key]: {\n current: flags[key].current,\n fictive: flags[key].fictive\n }\n }),\n {}\n );\n }\n\n static deserialize(serializedFlags: SerializedFlagSet): WritableFlagChangeset {\n return Object.keys(serializedFlags).reduce(\n (acc, key) => ({\n ...acc,\n [key]: {\n current: serializedFlags[key].current,\n previous: null,\n ...(serializedFlags[key].fictive ? { fictive: true } : {})\n }\n }),\n {}\n );\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable, of } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\nimport {\n FlagChangeset,\n IFeaturesService,\n FlagSet,\n IWritableFeaturesService,\n WritableFeaturesServiceConfigToken,\n WritableFlagChangeset,\n WritableFeaturesServiceConfig\n} from '../interfaces/features.interface';\nimport { FlagSetParser } from './flagset.parser';\n\n@Injectable({ providedIn: 'root' })\nexport class StorageFeaturesService implements IFeaturesService, IWritableFeaturesService {\n private currentFlagState: WritableFlagChangeset = {};\n private readonly flags = new BehaviorSubject<WritableFlagChangeset>({});\n private readonly flags$ = this.flags.asObservable();\n private readonly initSubject = new BehaviorSubject<boolean>(false);\n\n constructor(@Optional() @Inject(WritableFeaturesServiceConfigToken) private config?: WritableFeaturesServiceConfig) {\n combineLatest({\n flags: this.flags,\n init: this.waitForInitializationToFinish()\n }).subscribe(({ flags }) => {\n this.currentFlagState = flags;\n sessionStorage.setItem(this.storageKey, JSON.stringify(FlagSetParser.serialize(flags)));\n });\n }\n\n get storageKey(): string {\n return this.config?.storageKey || 'feature-flags';\n }\n\n init(): Observable<WritableFlagChangeset> {\n const storedFlags = JSON.parse(sessionStorage.getItem(this.storageKey) || '{}');\n const initialFlagChangeSet = FlagSetParser.deserialize(storedFlags);\n this.flags.next(initialFlagChangeSet);\n this.initSubject.next(true);\n return of(initialFlagChangeSet);\n }\n\n isOn$(key: string): Observable<boolean> {\n return this.flags$.pipe(map((flags) => !!flags[key]?.current));\n }\n\n isOff$(key: string): Observable<boolean> {\n return this.flags$.pipe(map((flags) => !flags[key]?.current));\n }\n\n getFlags$(): Observable<WritableFlagChangeset> {\n return this.flags$;\n }\n\n setFlag(key: string, value: any): void {\n let fictive = {};\n if (!this.currentFlagState[key]) {\n fictive = { fictive: true };\n } else {\n fictive = this.currentFlagState[key]?.fictive ? { fictive: true } : {};\n }\n\n this.flags.next({\n ...this.currentFlagState,\n [key]: {\n current: value,\n previous: this.currentFlagState[key]?.current ?? null,\n ...fictive\n }\n });\n }\n\n removeFlag(key: string): void {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { [key]: _, ...flags } = this.currentFlagState;\n this.flags.next(flags);\n }\n\n resetFlags(flags: FlagSet): void {\n this.flags.next(\n Object.keys(flags).reduce(\n (acc, key) => ({\n ...acc,\n [key]: {\n current: flags[key],\n previous: null,\n fictive: true\n }\n }),\n {}\n )\n );\n }\n\n mergeFlags(flags: FlagChangeset): void {\n const mergedFlags: WritableFlagChangeset = Object.keys(flags).reduce((acc, key) => {\n const current = this.currentFlagState[key]?.current;\n return {\n ...acc,\n [key]: {\n current: current ?? flags[key].current,\n previous: current ?? null\n }\n };\n }, {});\n\n Object.keys(this.currentFlagState)\n .filter((key) => !flags[key])\n .forEach((key) => {\n mergedFlags[key] = {\n current: this.currentFlagState[key].current,\n previous: this.currentFlagState[key].previous,\n fictive: true\n };\n });\n\n this.flags.next(mergedFlags);\n }\n\n private waitForInitializationToFinish(): Observable<boolean> {\n return this.initSubject.pipe(filter((initialized) => !!initialized));\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { BehaviorSubject, Observable, combineLatest } from 'rxjs';\nimport { filter, switchMap } from 'rxjs/operators';\nimport {\n IDebugFeaturesService,\n IFeaturesService,\n FlagChangeset,\n OverridableFeaturesServiceToken,\n WritableFeaturesServiceToken,\n WritableFeaturesServiceConfigToken,\n WritableFeaturesServiceConfig,\n FlagSet,\n IWritableFeaturesService\n} from '../interfaces/features.interface';\n\n@Injectable()\nexport class DebugFeaturesService implements IDebugFeaturesService {\n private readonly isInDebugModeSubject = new BehaviorSubject<boolean>(false);\n private readonly isInDebugMode$ = this.isInDebugModeSubject.asObservable();\n private readonly initSubject = new BehaviorSubject<boolean>(false);\n\n get storageKey(): string {\n return `${this.config?.storageKey || 'feature-flags'}-override`;\n }\n\n constructor(\n @Inject(OverridableFeaturesServiceToken) private overriddenFeaturesService: IFeaturesService,\n @Inject(WritableFeaturesServiceToken) private writableFeaturesService: IFeaturesService & IWritableFeaturesService,\n @Optional() @Inject(WritableFeaturesServiceConfigToken) private config?: WritableFeaturesServiceConfig\n ) {\n this.init();\n\n combineLatest({\n debugMode: this.isInDebugModeSubject,\n init: this.waitForInitializationToFinish()\n }).subscribe(({ debugMode }) => {\n sessionStorage.setItem(this.storageKey, JSON.stringify(debugMode));\n });\n }\n\n isOn$(key: string): Observable<boolean> {\n return this.isInDebugMode$.pipe(\n switchMap((isInDebugMode) => (isInDebugMode ? this.writableFeaturesService : this.overriddenFeaturesService).isOn$(key))\n );\n }\n\n isOff$(key: string): Observable<boolean> {\n return this.isInDebugMode$.pipe(\n switchMap((isInDebugMode) => (isInDebugMode ? this.writableFeaturesService : this.overriddenFeaturesService).isOff$(key))\n );\n }\n\n /**\n * Gets the flags as an observable.\n *\n * @returns the observable that emits the flag changeset.\n */\n getFlags$(): Observable<FlagChangeset> {\n return this.isInDebugMode$.pipe(\n switchMap((isInDebugMode) => (isInDebugMode ? this.writableFeaturesService : this.overriddenFeaturesService).getFlags$())\n );\n }\n\n /**\n * Resets the specified flags.\n *\n * @param flags The flags to reset.\n */\n resetFlags(flags: FlagSet): void {\n this.writableFeaturesService.resetFlags(flags);\n }\n\n enable(on: boolean): void {\n this.isInDebugModeSubject.next(on);\n }\n\n isEnabled$(): Observable<boolean> {\n return this.isInDebugMode$;\n }\n\n private init() {\n const storedOverride = JSON.parse(sessionStorage.getItem(this.storageKey) || 'false');\n this.isInDebugModeSubject.next(storedOverride);\n this.initSubject.next(true);\n }\n\n private waitForInitializationToFinish(): Observable<boolean> {\n return this.initSubject.pipe(filter((initialized) => !!initialized));\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ApplicationRef, Inject, Injectable } from '@angular/core';\nimport { FeaturesServiceToken, FlagSet } from '../interfaces/features.interface';\nimport { DebugFeaturesService } from './debug-features.service';\n@Injectable()\nexport class QaFeaturesHelper {\n constructor(private applicationRef: ApplicationRef, @Inject(FeaturesServiceToken) private debugFeaturesService: DebugFeaturesService) {}\n\n isOn(key: string): boolean {\n let isOn = false;\n this.debugFeaturesService.isOn$(key).subscribe((on) => {\n isOn = on;\n });\n\n return isOn;\n }\n\n resetFlags(flags: FlagSet): void {\n this.debugFeaturesService.resetFlags(flags);\n this.applicationRef.tick();\n }\n\n enable(): void {\n this.debugFeaturesService.enable(true);\n this.applicationRef.tick();\n }\n\n disable(): void {\n this.debugFeaturesService.enable(false);\n this.applicationRef.tick();\n }\n\n isEnabled(): boolean {\n let enabled = false;\n this.debugFeaturesService.isEnabled$().subscribe((isEnabled) => {\n enabled = isEnabled;\n });\n return enabled;\n }\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { inject, provideAppInitializer } from '@angular/core';\nimport {\n FlagsOverrideToken,\n FeaturesServiceToken,\n QaFeaturesHelperConfig,\n WritableFeaturesServiceConfig,\n WritableFeaturesServiceConfigToken,\n WritableFeaturesServiceToken,\n IFeaturesService\n} from '../interfaces/features.interface';\nimport { StorageFeaturesService } from '../services/storage-features.service';\nimport { DebugFeaturesService } from '../services/debug-features.service';\nimport { QaFeaturesHelper } from '../services/qa-features.helper';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n *\n * @param config Configuration for the Feature Flags\n * @returns Environment Providers for Feature Flags\n */\nexport function provideDebugFeatureFlags(config: WritableFeaturesServiceConfig & QaFeaturesHelperConfig) {\n return [\n { provide: FlagsOverrideToken, useValue: true },\n { provide: FeaturesServiceToken, useClass: DebugFeaturesService },\n { provide: WritableFeaturesServiceConfigToken, useValue: config },\n { provide: WritableFeaturesServiceToken, useClass: StorageFeaturesService },\n { provide: QaFeaturesHelper, useClass: QaFeaturesHelper },\n provideAppInitializer(() => {\n const initializerFn = (\n (featuresService: IFeaturesService) => () =>\n featuresService.init()\n )(inject(WritableFeaturesServiceToken));\n return initializerFn();\n }),\n provideAppInitializer(() => {\n const initializerFn = ((qaFeaturesHelper: QaFeaturesHelper, document: Document) => () => {\n document[config.helperExposeKeyOnDocument ?? 'featureOverrides'] = qaFeaturesHelper;\n })(inject(QaFeaturesHelper), inject(DOCUMENT));\n return initializerFn();\n })\n ];\n}\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { of } from 'rxjs';\nimport { FeaturesServiceToken, FlagChangeset, IFeaturesService } from '../interfaces/features.interface';\n\nexport interface MockFeatureFlags {\n [key: string]: boolean;\n}\n\nconst assertFeatureFlag = (flagChangeset: FlagChangeset, key: string): void => {\n const flagChangesetValue = flagChangeset[key];\n\n if (flagChangesetValue === undefined) {\n throw new Error(\n `ERROR FEATURE-FLAG\\n'${key}' feature is not mocked, please mock '${key}' using '${provideMockFeatureFlags.name}' helper in your test\\n`\n );\n }\n};\n\nconst mockFeaturesService = (flagChangeset: FlagChangeset): IFeaturesService => ({\n init: () => of(flagChangeset),\n isOn$: (key) => {\n assertFeatureFlag(flagChangeset, key);\n return of(flagChangeset[key].current);\n },\n isOff$: (key) => {\n assertFeatureFlag(flagChangeset, key);\n return of(!flagChangeset[key].current);\n },\n getFlags$: () => of(flagChangeset)\n});\n\nconst arrayToFlagChangeset = (featureFlags: string[]): FlagChangeset => {\n const flagChangeset: FlagChangeset = {};\n featureFlags.forEach((featureFlag) => {\n flagChangeset[featureFlag] = { current: true, previous: null };\n });\n return flagChangeset;\n};\n\nconst mockFeatureFlagsToFlagChangeset = (mockFeatureFlags: MockFeatureFlags) => {\n const flagChangeset: FlagChangeset = {};\n const featureFlags = Object.keys(mockFeatureFlags);\n featureFlags.forEach((featureFlag) => {\n flagChangeset[featureFlag] = { current: mockFeatureFlags[featureFlag], previous: null };\n });\n return flagChangeset;\n};\n\nexport const provideMockFeatureFlags = (featureFlag: MockFeatureFlags | string | string[]) => {\n if (typeof featureFlag === 'string') {\n featureFlag = [featureFlag];\n }\n\n const flagChangeset = Array.isArray(featureFlag) ? arrayToFlagChangeset(featureFlag) : mockFeatureFlagsToFlagChangeset(featureFlag);\n\n return {\n provide: FeaturesServiceToken,\n useValue: mockFeaturesService(flagChangeset)\n };\n};\n","/*!\n * @license\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './lib/components/flags/flags.component';\nexport * from './lib/components/feature-override-indicator.component';\nexport * from './lib/components/feature-flags-wrapper';\nexport * from './lib/directives/features.directive';\nexport * from './lib/directives/not-features.directive';\nexport * from './lib/guards/is-feature-on.guard';\nexport * from './lib/guards/is-feature-off.guard';\nexport * from './lib/guards/is-flags-override-on.guard';\nexport * from './lib/providers/dummy-feature-flags.provider';\nexport * from './lib/providers/debug-feature-flags.provider';\nexport * from './lib/interfaces/features.interface';\nexport * from './lib/mocks/features-service-mock.factory';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -15,7 +15,6 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  export * from './app-config.service';
18
- export * from './debug-app-config.service';
19
18
  export * from './app-config.pipe';
20
19
  export * from './app-config-storage-prefix.factory';
21
20
  export * from './provide-app-config';
@@ -14,8 +14,6 @@
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
- import { DataColumn } from '../datatable/data/data-column.model';
18
- export declare const getDataColumnMock: <T = unknown>(column?: Partial<DataColumn<T>>) => DataColumn<T>;
19
17
  export declare const textColumnRows: {
20
18
  firstname: string;
21
19
  }[];
@@ -16,11 +16,6 @@
16
16
  */
17
17
  import { FormModel, FormValues } from '../../form/components/widgets/core';
18
18
  export declare const formTest: FormModel;
19
- export declare const fakeTaskProcessVariableModels: {
20
- id: string;
21
- type: string;
22
- value: string;
23
- }[];
24
19
  export declare const formValues: FormValues;
25
20
  export declare const fakeFormJson: any;
26
21
  export declare const fakeFormCheckBoxVisibilityJson: any;