@aglyn/shared-util-next

中文文档
1.19.0发布于 2026/11/07Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 9248

React hooks and helpers for carrying a ?continue= return URL through a Next.js App Router sign-in flow without creating an open redirect. It is used by Aglyn's console sign-in pages and is usable in any App Router app.

原始使用文档
文档目录5 节
  1. Install
  2. What's in it
  3. Usage
  4. How it fits
  5. License

@aglyn/shared-util-next

React hooks and helpers for carrying a ?continue= return URL through a Next.js App Router sign-in flow without creating an open redirect. It is used by Aglyn's console sign-in pages and is usable in any App Router app.

Published to npm from the Aglyn monorepo. Versions follow semantic versioning.

Install

npm install @aglyn/shared-util-next

Peer dependencies: next (16.3.3) and react (^19.2.8).

What's in it

One client module ('use client'), use-continue-url, re-exported from the package root:

  • useContinueUrl() - returns [encoded, decoded, pushNext]: the current pathname URL-encoded (to put into a link to the sign-in page), the validated continue value from the query string (or ''), and a function that navigates to it.
  • useContinueUrlDecoded() - [decoded, pushNext]. pushNext(url = '/') goes to the continue URL when there is a safe one, otherwise to url. Relative targets use router.push; absolute ones use window.location.assign.
  • useContinueUrlEncoded() - the encoded current pathname only.
  • useContinueHref(path) - an href for a link out of the current page that keeps the continue value. Reads only useSearchParams, not the router.
  • withContinueUrl(path, continueUrl) - the same, as a plain function. Unsafe or empty values append nothing.
  • isSafeContinueUrl(url) - the predicate behind all of the above.
  • ContinueParamName ('continue') and continueParam(value).

A continue URL is accepted when it is a relative path that resolves onto the current origin (checked with isSameOriginPath from @aglyn/shared-util-http/safe-redirect), or an absolute https: URL whose host is the workspace domain or a subdomain of it. The workspace domain comes from NEXT_PUBLIC_WORKSPACE_DOMAIN and defaults to aglyn.com, so set that variable when you use this outside Aglyn. Everything else is treated as absent.

Usage

'use client'

import { useContinueHref, useContinueUrlDecoded } from '@aglyn/shared-util-next'

export function AfterSignIn() {
  const [, pushNext] = useContinueUrlDecoded()
  const ssoHref = useContinueHref('/sso')

  return (
    <>
      <button onClick={() => pushNext('/dashboard')}>Continue</button>
      <a href={ssoHref}>Use single sign-on</a>
    </>
  )
}

The hooks call useSearchParams, so render them under a Suspense boundary as Next.js requires.

How it fits

A shared package: generic, with no knowledge of Aglyn's model. Shared packages may only import other shared packages; this one depends on @aglyn/shared-util-http. No other library in the monorepo depends on it; the console app uses it directly.

License

Apache-2.0. Source: https://github.com/aglyn/aglyn/tree/main/libs/shared/util/next

版本与发布记录

@aglyn/shared-util-next 共发布 153 个版本,首次发布于 2026/09/21;过去 12 个月发布了 153 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.19.0latest2026/11/07今天
1.18.02026/11/07今天
1.17.02026/11/07今天
1.16.02026/11/07今天
1.15.22026/11/061 天前
1.15.12026/11/061 天前

其他发布通道:beta → 1.0.0-beta.296。

关于 @aglyn/shared-util-next 的常见问题

@aglyn/shared-util-next 是什么?

React hooks and helpers for carrying a ?continue= return URL through a Next.js App Router sign-in flow without creating an open redirect. It is used by Aglyn's console sign-in pages and is usable in any App Router app.

如何安装 @aglyn/shared-util-next?

在项目目录运行 npm install @aglyn/shared-util-next,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:next(^16.3.3)、react(^19.2.8)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@aglyn/shared-util-next 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aglyn/shared-util-next 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@aglyn/shared-util-next 可以商用吗?

@aglyn/shared-util-next 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@aglyn/shared-util-next 的下载量有多少?

根据 npm 官方下载统计,@aglyn/shared-util-next 在 2026/10/05 – 2026/11/03 这 30 天内被下载 9,248 次,日均约 308 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aglyn/shared-util-next 还在维护吗?

最新版本 1.19.0 发布于 2026/11/07(今天);至今共发布 153 个版本,其中过去 12 个月发布了 153 个;首次发布于 2026/09/21。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。