{"version":3,"file":"ngxtension-assert-injector.mjs","sources":["../../../../libs/ngxtension/assert-injector/src/assert-injector.ts","../../../../libs/ngxtension/assert-injector/src/ngxtension-assert-injector.ts"],"sourcesContent":["import {\n\tInjector,\n\tassertInInjectionContext,\n\tinject,\n\trunInInjectionContext,\n} from '@angular/core';\n\n/**\n * `assertInjector` extends `assertInInjectionContext` with an optional `Injector`\n * After assertion, `assertInjector` runs the `runner` function with the guaranteed `Injector`\n * whether it is the default `Injector` within the current **Injection Context**\n * or the custom `Injector` that was passed in.\n *\n * @template {() => any} Runner - Runner is a function that can return anything\n * @param {Function} fn - the Function to pass in `assertInInjectionContext`\n * @param {Injector | undefined | null} injector - the optional \"custom\" Injector\n * @param {Runner} runner - the runner fn\n * @returns {ReturnType<Runner>} result - returns the result of the Runner\n *\n * @example\n * ```ts\n * function injectValue(injector?: Injector) {\n *  return assertInjector(injectValue, injector, () => 'value');\n * }\n *\n * injectValue(); // string\n * ```\n */\nexport function assertInjector<Runner extends () => any>(\n\tfn: Function,\n\tinjector: Injector | undefined | null,\n\trunner: Runner,\n): ReturnType<Runner>;\n/**\n * `assertInjector` extends `assertInInjectionContext` with an optional `Injector`\n * After assertion, `assertInjector` returns a guaranteed `Injector` whether it is the default `Injector`\n * within the current **Injection Context** or the custom `Injector` that was passed in.\n *\n * @param {Function} fn - the Function to pass in `assertInInjectionContext`\n * @param {Injector | undefined | null} injector - the optional \"custom\" Injector\n * @returns Injector\n *\n * @example\n * ```ts\n * function injectDestroy(injector?: Injector) {\n *  injector = assertInjector(injectDestroy, injector);\n *\n *  return runInInjectionContext(injector, () => {\n *    // code\n *  })\n * }\n * ```\n */\nexport function assertInjector(\n\tfn: Function,\n\tinjector: Injector | undefined | null,\n): Injector;\nexport function assertInjector(\n\tfn: Function,\n\tinjector: Injector | undefined | null,\n\trunner?: () => any,\n) {\n\t!injector && assertInInjectionContext(fn);\n\tconst assertedInjector = injector ?? inject(Injector);\n\n\tif (!runner) return assertedInjector;\n\treturn runInInjectionContext(assertedInjector, runner);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;SAyDgB,cAAc,CAC7B,EAAY,EACZ,QAAqC,EACrC,MAAkB,EAAA;AAElB,IAAA,CAAC,QAAQ,IAAI,wBAAwB,CAAC,EAAE,CAAC,CAAC;IAC1C,MAAM,gBAAgB,GAAG,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;AAEtD,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,gBAAgB,CAAC;AACrC,IAAA,OAAO,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AACxD;;ACnEA;;AAEG;;;;"}