diff --git a/src/content/docs/ko/guides/upgrade-to/v5.mdx b/src/content/docs/ko/guides/upgrade-to/v5.mdx index 03a923a597423..4f6da305211d1 100644 --- a/src/content/docs/ko/guides/upgrade-to/v5.mdx +++ b/src/content/docs/ko/guides/upgrade-to/v5.mdx @@ -1104,7 +1104,7 @@ function useRoute(route: IntegrationRouteData) { } ``` -[`IntegrationRouteData`에 대한 API 참조](/ko/reference/integrations-reference/#integrationroutedata-타입-참조)를 확인하세요. +[`IntegrationRouteData`에 대한 API 참조](/ko/reference/integrations-reference/#integrationroutedata)를 확인하세요. ### 변경됨: `distURL`은 이제 배열입니다 (통합 API) @@ -1131,7 +1131,7 @@ if (route.distURL) { } ``` -[`IntegrationRouteData`에 대한 API 참조](/ko/reference/integrations-reference/#integrationroutedata-타입-참조)를 확인하세요. +[`IntegrationRouteData`에 대한 API 참조](/ko/reference/integrations-reference/#integrationroutedata)를 확인하세요. ### 변경됨: `app.render()`에 전달되는 인수 (어댑터 API) diff --git a/src/content/docs/ko/reference/adapter-reference.mdx b/src/content/docs/ko/reference/adapter-reference.mdx index 143ae0e573e0c..acc4e8c687033 100644 --- a/src/content/docs/ko/reference/adapter-reference.mdx +++ b/src/content/docs/ko/reference/adapter-reference.mdx @@ -475,11 +475,11 @@ return app.render(request, {

-**타입:** `RouteData`
+**타입:** [`RouteData`](/ko/reference/integrations-reference/#routedata)
**기본값:** `app.match(request)`

-렌더링할 경로를 이미 알고 있는 경우 [`integrationRouteData`](/ko/reference/integrations-reference/#integrationroutedata-타입-참조)에 대한 값을 제공하세요. 그렇게 하면 렌더링할 경로를 결정하기 위해 [`app.match()`](#appmatch)에 대한 내부 호출을 우회하게 됩니다. +라우트에 대한 정보를 정의합니다. 이는 렌더링할 라우트를 이미 알고 있을 때 유용합니다. 그렇게 하면 렌더링할 라우트를 결정하기 위해 [`app.match()`](#appmatch)에 대한 내부 호출을 우회하게 됩니다. ```js "routeData" const routeData = app.match(request); diff --git a/src/content/docs/ko/reference/integrations-reference.mdx b/src/content/docs/ko/reference/integrations-reference.mdx index fabca33a94f56..d212374a84ace 100644 --- a/src/content/docs/ko/reference/integrations-reference.mdx +++ b/src/content/docs/ko/reference/integrations-reference.mdx @@ -615,7 +615,7 @@ function setPrerender() {

-**타입:** [`IntegrationResolvedRoute[]`](#integrationresolvedroute-타입-참조) +**타입:** [`IntegrationResolvedRoute[]`](#integrationresolvedroute)

연관된 메타데이터를 포함한 모든 라우트 목록입니다. @@ -1076,7 +1076,7 @@ export default {

-**타입:** Map\<IntegrationRouteData, URL\>
+**타입:** Map\<IntegrationRouteData, URL\>

@@ -1216,7 +1216,7 @@ export default function myIntegration() {

-**타입:** [`IntegrationRouteData[]`](#integrationroutedata-타입-참조) +**타입:** [`IntegrationRouteData[]`](#integrationroutedata)

생성된 모든 경로와 연결된 메타데이터 목록입니다. @@ -1234,7 +1234,7 @@ export default function myIntegration() {

-[`IntegrationResolvedRoute`](#integrationresolvedroute-타입-참조) `pattern` 속성별로 그룹화된 출력 파일 경로의 URL을 포함합니다. +[`IntegrationResolvedRoute`](#integrationresolvedroute) `pattern` 속성별로 그룹화된 출력 파일 경로의 URL을 포함합니다. #### `pages` 옵션 @@ -1265,6 +1265,23 @@ Astro는 향후 내장 훅을 위해 `astro:` 접두사를 예약합니다. 사 ## 통합 타입 참조 +`astro` 모듈에서 다음 타입을 가져올 수 있습니다. + +```ts +import type { + AstroIntegrationLogger, + HookParameters, + IntegrationResolvedRoute, + RedirectConfig, + RouteData, + RoutePart, + RouteType, + ValidRedirectStatus, + // 다음 타입은 더 이상 사용되지 않습니다. + IntegrationRouteData, +} from "astro"; +``` + ### `AstroIntegrationLogger` 로그를 작성하는 데 유용한 Astro 로거의 인스턴스입니다. 이 로거는 CLI를 통해 구성된 동일한 [로그 수준](/ko/reference/cli-reference/#--verbose)을 사용합니다. @@ -1339,22 +1356,20 @@ function mySetup(options: HookParameters<'astro:config:setup'>) { } ``` -### `IntegrationResolvedRoute` 타입 참조 +### `IntegrationResolvedRoute` + +속성이 다시 매핑된 [`RouteData`](#routedata)의 하위 집합입니다. ```ts -interface IntegrationResolvedRoute { +interface IntegrationResolvedRoute extends Pick< + RouteData, + 'generate' | 'params' | 'pathname' | 'segments' | 'type' | 'redirect' | 'origin' + > & { pattern: RouteData['route']; patternRegex: RouteData['pattern']; entrypoint: RouteData['component']; isPrerendered: RouteData['prerender']; redirectRoute?: IntegrationResolvedRoute; - generate: (data?: any) => string; - params: string[]; - pathname?: string; - segments: RoutePart[][]; - type: RouteType; - redirect?: RedirectConfig; - origin: 'internal' | 'external' | 'project'; } ``` @@ -1362,7 +1377,7 @@ interface IntegrationResolvedRoute {

-**타입:** `string` +**타입:** [`RouteData['route']`](#route)

경로를 기반으로 경로의 타입을 식별할 수 있습니다. 다음은 패턴과 연결된 경로의 몇 가지 예입니다. @@ -1374,7 +1389,7 @@ interface IntegrationResolvedRoute {

-**타입:** `RegExp` +**타입:** [`RouteData['pattern']`](#pattern-1)

입력 URL을 요청된 경로와 매치하는 데 사용되는 정규식에 접근할 수 있습니다. @@ -1385,7 +1400,7 @@ interface IntegrationResolvedRoute {

-**타입:** `string` +**타입:** [`RouteData['component']`](#component)

소스 컴포넌트의 URL 경로 이름입니다. @@ -1394,7 +1409,7 @@ interface IntegrationResolvedRoute {

-**타입:** `boolean` +**타입:** [`RouteData['prerender']`](#prerender)

경로가 [온디맨드 렌더링](/ko/guides/on-demand-rendering/)을 사용하는지 여부를 결정합니다. 이 값은 다음과 같이 구성된 프로젝트의 경우 `true`가 됩니다. @@ -1410,6 +1425,40 @@ interface IntegrationResolvedRoute { `IntegrationResolvedRoute.type`의 값이 `redirect`인 경우, 값은 리디렉션할 `IntegrationResolvedRoute`가 됩니다. 그렇지 않으면 값은 undefined가 됩니다. +### `RedirectConfig` + +

+ +**타입:** string | \{ status: ValidRedirectStatus; destination: string; \} +

+ +리디렉션의 목적지를 설명합니다. 문자열이거나 상태 코드와 목적지에 대한 정보를 포함하는 객체일 수 있습니다. + +### `RouteData` + +라우트에 대한 정보를 설명합니다. 여기에는 다음 속성이 포함됩니다. + +#### `route` + +

+ +**타입:** `string` +

+ +현재 라우트 패턴을 정의합니다. 다음은 패턴과 연관된 경로의 몇 가지 예시입니다. +* `src/pages/index.astro`는 `/`가 됩니다. +* `src/pages/blog/[...slug].astro`는 `/blog/[...slug]`가 됩니다. +* `src/pages/site/[blog]/[...slug].astro`는 `/site/[blog]/[...slug]`가 됩니다. + +#### `component` + +

+ +**타입:** `string` +

+ +소스 컴포넌트 URL을 지정합니다. + #### `generate()`

@@ -1419,10 +1468,10 @@ interface IntegrationResolvedRoute { 경로의 선택적 매개변수를 제공하고, 경로 패턴과 함께 보간하여 경로의 이름을 반환하는 함수입니다. -예를 들어, `/blog/[...id].astro`와 같은 경로를 사용하면 `generate` 함수는 다음을 반환할 수 있습니다. +예를 들어, `/blog/[...id].astro`와 같은 경로를 사용하면 `generate()` 함수는 다음을 반환할 수 있습니다. ```js -console.log(generate({ id: 'presentation' })) // `/blog/presentation`가 기록됩니다. +generate({ id: 'presentation' }) // `/blog/presentation`을 출력합니다. ``` #### `params` @@ -1443,11 +1492,32 @@ console.log(generate({ id: 'presentation' })) // `/blog/presentation`가 기록 일반 경로의 경우, 값은 이 경로가 제공될 URL 경로 이름이 됩니다. 프로젝트에서 [동적 경로](/ko/guides/routing/#동적-라우트)(예: `[dynamic]` 또는 `[...spread]`)를 사용하는 경우 경로 이름은 undefined가 됩니다. +#### `distURL` + +

+ +**타입:** `URL[] | undefined`
+ +

+ +이 라우트에서 생성된 실제 파일의 경로를 정의합니다. 라우트가 미리 렌더링되지 않은 경우 값은 `undefined`이거나 빈 배열입니다. + +#### `pattern` + +

+ +**타입:** `RegExp` +

+ +입력된 URL을 요청된 라우트와 일치시키는 데 사용할 정규식을 지정합니다. + +예를 들어, `[fruit]/about.astro` 경로가 주어지면 정규식은 `/^\/([^/]+?)\/about\/?$/`가 됩니다. `pattern.test("banana/about")`을 사용하면 `true`가 반환됩니다. + #### `segments`

-**타입:** RoutePart[][] +**타입:** RoutePart[][]

추가 메타데이터와 함께 경로 [`params`](#params)에 접근할 수 있습니다. 각 객체는 다음 속성을 포함합니다. @@ -1469,172 +1539,161 @@ console.log(generate({ id: 'presentation' })) // `/blog/presentation`가 기록

-**타입:** `RouteType` +**타입:** [`RouteType`](#routetype)

-경로의 타입을 식별할 수 있습니다. 가능한 값은 다음과 같습니다. -* `page`: 파일 시스템에 있는 경로로, 일반적으로 Astro 컴포넌트입니다. -* `endpoint`: 파일 시스템에 있는 경로로, 일반적으로 엔드포인트 메서드를 노출하는 JS 파일입니다. -* `redirect`: 파일 시스템에 있는 다른 경로를 가리키는 경로입니다. -* `fallback`: 파일 시스템에 존재하지 않는 경로로, 일반적으로 미들웨어를 통해 다른 방법으로 처리해야 합니다. +[라우트의 타입](#routetype)을 식별할 수 있습니다. -#### `redirect` +#### `prerender`

-**타입:** RedirectConfig | undefined +**타입:** `boolean`

-리디렉션할 경로에 접근할 수 있습니다. 문자열이거나 상태 코드와 목적지에 대한 정보를 포함하는 객체일 수 있습니다. +라우트가 [온디맨드 렌더링](/ko/guides/on-demand-rendering/)을 사용할지 또는 빌드 시점에 정적으로 사전 렌더링할지 여부를 결정합니다. -#### `origin` +라우팅 참조에서 [`prerendered`](/ko/reference/routing-reference/#prerender)를 확인하세요. + +#### `redirect`

-**타입:** `'internal' | 'external' | 'project'` +**타입:** RedirectConfig | undefined

-경로가 Astro 코어(`internal`), 통합 기능(`external`) 또는 사용자 프로젝트(`project`)에서 왔는지 여부를 결정합니다. - -### `IntegrationRouteData` 타입 참조 - -:::caution -이 타입은 v5.0부터 더 이상 사용되지 않습니다. 대신 [`IntegrationResolvedRoute`](#integrationresolvedroute-타입-참조)를 사용하세요. -::: - -통합 기능에서 사용되는 `RouteData`의 축소 버전입니다. +리디렉션할 라우트에 액세스할 수 있습니다. -```ts -interface IntegrationRouteData { - type: RouteType; - component: string; - pathname?: string; - pattern: RegExp; - params: string[]; - segments: { content: string; dynamic: boolean; spread: boolean; }[][]; - generate: (data?: any) => string; - prerender: boolean; - distURL?: URL[]; - redirect?: RedirectConfig; - redirectRoute?: IntegrationRouteData; -} -``` - -#### `type` +#### `redirectRoute`

-**타입:** `RouteType` +**타입:** `RouteData | undefined`

-경로의 타입을 식별할 수 있습니다. 값은 다음 중 하나일 수 있습니다. -- `page`: 파일 시스템에 있는 경로로, 일반적으로 Astro 컴포넌트입니다. -- `endpoint`: 파일 시스템에 있는 경로로, 일반적으로 엔드포인트 메서드를 노출하는 JS 파일입니다. -- `redirect`: 파일 시스템에 있는 다른 경로를 가리키는 경로입니다. -- `fallback`: 파일 시스템에 존재하지 않는 경로로, 일반적으로 미들웨어를 통해 다른 방법으로 처리해야 합니다. +[`RouteData.type`](#type)가 `redirect`일 때 리디렉션할 `RouteData`를 지정합니다. -#### `component` +#### `fallbackRoutes`

-**타입:** `string` +**타입:** `RouteData[]`
+

-소스 컴포넌트 URL 경로 이름에 접근할 수 있습니다. +[`i18n.fallback`](/ko/reference/configuration-reference/#i18nfallback)에 로케일 목록이 지정되어 있을 때, 대체로 사용할 `RouteData` 목록을 정의합니다. -#### `pathname` +#### `isIndex`

-**타입:** `string | undefined` +**타입:** `boolean`

-일반 경로의 경우, 값은 이 경로가 제공될 URL 경로 이름이 됩니다. 프로젝트에서 [동적 경로](/ko/guides/routing/#동적-라우트) (예: `[dynamic]` 또는 `[...spread]`)를 사용하는 경우, 경로 이름은 undefined가 됩니다. +해당 라우트가 디렉터리 인덱스인지 여부를 지정합니다. (예: `src/pages/index.astro`, `src/pages/blog/index.astro`) -#### `pattern` +#### `origin`

-**타입:** `RegExp` +**타입:** `'internal' | 'external' | 'project'`
+

-입력 URL을 요청된 경로와 매치하는 데 사용되는 정규식에 접근할 수 있습니다. +해당 라우트가 Astro 코어(`internal`), 통합 기능(`external`), 또는 사용자 프로젝트(`project`)에서 비롯된 것인지 결정합니다. -예를 들어, `[fruit]/about.astro` 경로가 주어지면 정규식은 `/^\/([^/]+?)\/about\/?$/`가 됩니다. `pattern.test("banana/about")`을 사용하면 `true`가 반환됩니다. - -#### `params` +### `RoutePart`

-**타입:** `string[]` +**타입:** `{ content: string; dynamic: boolean; spread: boolean; }`

-경로 `params`에 접근할 수 있습니다. 예를 들어, 프로젝트에서 `/pages/[lang]/[...slug].astro`와 같은 [동적 경로](/ko/guides/routing/#동적-라우트)를 사용하는 경우 값은 `['lang', '...slug']`가 됩니다. +라우트 세그먼트를 설명합니다. 여기에는 다음과 같은 속성들이 포함됩니다. -#### `segments` +#### `content`

-**타입:** `{ content: string; dynamic: boolean; spread: boolean; }[][]` +**타입:** `string`

-추가 메타데이터와 함께 경로 [`params`](#params-1)에 접근할 수 있습니다. 각 객체는 다음 속성을 포함합니다. -* `content`: `param` -* `dynamic`: 경로가 동적인지 여부 -* `spread`: 동적 경로가 spread 구문을 사용하는지 여부 +라우트의 매개변수 이름을 지정합니다. 예를 들면 다음과 같습니다. -예를 들어, 경로 `/pages/[lang]/index.astro`는 `[[ { content: 'lang', dynamic: true, spread: false } ]]` 세그먼트를 출력합니다. +* `about.astro`의 이름은 `about`입니다. +* `[slug].astro`의 이름은 `slug`입니다. +* `[...id].astro`의 이름은 `id`입니다. -#### `generate()` +#### `dynamic`

-**타입:** `(data?: any) => string` +**타입:** `boolean`

-경로의 선택적 매개변수를 제공하고, 경로 패턴과 함께 보간하여 경로의 이름을 반환하는 함수입니다. - -예를 들어, `/blog/[...id].astro`와 같은 경로가 있는 경우, `generate` 함수는 다음을 반환할 수 있습니다. +해당 라우트가 동적인지 여부를 나타냅니다. -```js -console.log(generate({ id: 'presentation' })) // `/blog/presentation`가 기록됩니다. -``` - -#### `prerender` +#### `spread`

**타입:** `boolean`

-경로를 미리 렌더링할지 여부를 결정합니다. +동적 라우트가 스프레드 문법을 사용하는지 여부를 나타냅니다. -#### `distURL` +### `RouteType`

-**타입:** `URL[] | undefined` +**타입:** `'page' | 'endpoint' | 'redirect' | 'fallback'`

-이 경로에서 방출된 물리적 파일의 경로입니다. 경로가 미리 렌더링되지 **않은** 경우 값은 `undefined`이거나 빈 배열입니다. +지원되는 라우트 타입들의 유니언입니다. -#### `redirect` +* `page`: 파일 시스템에 존재하는 라우트로, 일반적으로 Astro 컴포넌트입니다. +* `endpoint`: 파일 시스템에 존재하는 라우트로, 일반적으로 엔드포인트 메서드를 노출하는 JS 파일입니다. +* `redirect`: 파일 시스템에 존재하는 다른 라우트를 가리키는 라우트입니다. +* `fallback`: 파일 시스템에는 존재하지 않으며, 보통 미들웨어 등 다른 방식으로 처리해야 하는 라우트입니다. + +### `ValidRedirectStatus`

-**타입:** RedirectConfig | undefined +**타입:** `301 | 302 | 303 | 307 | 308 | 300 | 304`

-리디렉션할 경로에 접근할 수 있습니다. 문자열이거나 상태 코드와 목적지에 대한 정보를 포함하는 객체일 수 있습니다. +지원되는 리디렉션 상태 코드들의 유니언입니다. -#### `redirectRoute` +### 사용 중단된 타입 가져오기 + +다음 타입들은 더 이상 권장되지 않으며, 향후 주요 버전에서 제거될 예정입니다. + +#### `IntegrationRouteData` + +:::caution +이 타입은 v5.0부터 사용 중단되었습니다. 대신 [`IntegrationResolvedRoute`](#integrationresolvedroute)를 사용하세요. +::: + +통합에서 사용되는 [`RouteData`](#routedata)의 축소된 버전입니다. + +```ts +type IntegrationRouteData = Omit< + RouteData, + 'isIndex' | 'fallbackRoutes' | 'redirectRoute' | 'origin' +> & { + redirectRoute?: IntegrationRouteData; +}; +``` + +##### `redirectRoute`

**타입:** `IntegrationRouteData | undefined`

-`RouteData.type`의 값이 `redirect`인 경우, 값은 리디렉션할 경로의 `IntegrationRouteData`를 포함합니다. 그렇지 않으면 값은 undefined가 됩니다. +[`RouteData.type`](#type)의 값이 `redirect`인 경우, 값은 리디렉션할 경로의 `IntegrationRouteData`를 포함합니다. 그렇지 않으면 값은 undefined가 됩니다. ## `astro add`를 통한 설치 허용