{
  "id": "@typed/fx/Sink#dropAfter",
  "canonicalId": "@typed/fx/Sink#dropAfter",
  "symbol": {
    "id": "@typed/fx/Sink#dropAfter",
    "packageName": "@typed/fx",
    "moduleName": "Sink",
    "exportName": "dropAfter",
    "kind": "constant",
    "signatures": [
      "export declare const dropAfter: {\n    <A, E, R, R2>(sink: Sink<A, E, R>, predicate: Predicate<A>, f: (sink: Sink<A, E, R>) => Effect.Effect<unknown, E, R2>): Effect.Effect<void, never, R | R2>;\n};"
    ],
    "summary": "Runs a producer callback until the first matching value has been forwarded.",
    "sections": {
      "Why": "Unlike a filtering operation, `dropAfter` includes the boundary value and then terminates\nproducer work normally.",
      "Ownership and lifetime": "Values are forwarded in order through the first predicate match, then early exit completes and\naborts the callback fiber. Callback failure is caught and sent to the original sink. The predicate\nis synchronous; thrown exceptions are defects."
    },
    "examples": [
      {
        "language": "ts",
        "code": "import { Effect } from \"effect\"\nimport * as Sink from \"@typed/fx/Sink\"\nconst target = Sink.make(Effect.logError, Effect.log)\nconst program = Sink.dropAfter(target, (n: number) => n >= 10, (limited) => limited.onSuccess(10))"
      }
    ],
    "relations": [],
    "source": {
      "file": "packages/fx/src/Sink/combinators.ts",
      "line": 1603
    },
    "since": "1.0.0",
    "category": "Stopping delivery"
  },
  "exposure": {
    "recordKind": "declaration",
    "id": "@typed/fx/Sink#dropAfter",
    "packageName": "@typed/fx",
    "packageVersion": "2.0.0-beta.13",
    "moduleName": "Sink",
    "consumerSpecifier": "@typed/fx/Sink",
    "exportName": "dropAfter",
    "qualifiedName": "dropAfter",
    "declarationKey": "declaration:505547b02710290390836e7b",
    "family": "variable",
    "signatures": [
      "export declare const dropAfter: {\n    <A, E, R, R2>(sink: Sink<A, E, R>, predicate: Predicate<A>, f: (sink: Sink<A, E, R>) => Effect.Effect<unknown, E, R2>): Effect.Effect<void, never, R | R2>;\n};"
    ],
    "sourceSpans": [
      {
        "file": "packages/fx/src/Sink/combinators.ts",
        "start": {
          "line": 1603,
          "column": 14
        },
        "end": {
          "line": 1622,
          "column": 3
        }
      },
      {
        "file": "packages/fx/src/Sink/combinators.ts",
        "start": {
          "line": 1604,
          "column": 3
        },
        "end": {
          "line": 1608,
          "column": 41
        }
      }
    ],
    "aliases": [
      "@typed/fx#Sink.dropAfter"
    ],
    "isAlias": false,
    "static": false
  },
  "declaration": {
    "declarationKey": "declaration:505547b02710290390836e7b",
    "name": "dropAfter",
    "family": "variable",
    "facets": [
      {
        "family": "variable",
        "syntaxKind": "VariableDeclaration",
        "signatures": [
          "export declare const dropAfter: {\n    <A, E, R, R2>(sink: Sink<A, E, R>, predicate: Predicate<A>, f: (sink: Sink<A, E, R>) => Effect.Effect<unknown, E, R2>): Effect.Effect<void, never, R | R2>;\n};"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/fx/src/Sink/combinators.ts",
            "start": {
              "line": 1603,
              "column": 14
            },
            "end": {
              "line": 1622,
              "column": 3
            }
          }
        ],
        "static": false,
        "readonly": false,
        "optional": false
      },
      {
        "family": "call-signature",
        "syntaxKind": "CallSignature",
        "signatures": [
          "<A, E, R, R2>(sink: Sink<A, E, R>, predicate: Predicate<A>, f: (sink: Sink<A, E, R>) => Effect.Effect<unknown, E, R2>): Effect.Effect<void, never, R | R2>;"
        ],
        "typeParameters": [
          "A",
          "E",
          "R",
          "R2"
        ],
        "sourceSpans": [
          {
            "file": "packages/fx/src/Sink/combinators.ts",
            "start": {
              "line": 1604,
              "column": 3
            },
            "end": {
              "line": 1608,
              "column": 41
            }
          }
        ],
        "static": false,
        "readonly": false,
        "optional": false
      }
    ],
    "signatures": [
      "export declare const dropAfter: {\n    <A, E, R, R2>(sink: Sink<A, E, R>, predicate: Predicate<A>, f: (sink: Sink<A, E, R>) => Effect.Effect<unknown, E, R2>): Effect.Effect<void, never, R | R2>;\n};"
    ],
    "typeParameters": [
      "A",
      "E",
      "R",
      "R2"
    ],
    "summary": "Runs a producer callback until the first matching value has been forwarded.",
    "sections": {
      "Why": "Unlike a filtering operation, `dropAfter` includes the boundary value and then terminates\nproducer work normally.",
      "Ownership and lifetime": "Values are forwarded in order through the first predicate match, then early exit completes and\naborts the callback fiber. Callback failure is caught and sent to the original sink. The predicate\nis synchronous; thrown exceptions are defects."
    },
    "examples": [
      {
        "language": "ts",
        "code": "import { Effect } from \"effect\"\nimport * as Sink from \"@typed/fx/Sink\"\nconst target = Sink.make(Effect.logError, Effect.log)\nconst program = Sink.dropAfter(target, (n: number) => n >= 10, (limited) => limited.onSuccess(10))"
      }
    ],
    "sourceSpans": [
      {
        "file": "packages/fx/src/Sink/combinators.ts",
        "start": {
          "line": 1603,
          "column": 14
        },
        "end": {
          "line": 1622,
          "column": 3
        }
      },
      {
        "file": "packages/fx/src/Sink/combinators.ts",
        "start": {
          "line": 1604,
          "column": 3
        },
        "end": {
          "line": 1608,
          "column": 41
        }
      }
    ],
    "since": "1.0.0",
    "category": "Stopping delivery"
  }
}
