@spfn/cms 0.1.0-alpha.65 → 0.1.0-alpha.68
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.
- package/README.md +27 -452
- package/dist/{actions-CwvmPG0e.d.ts → actions-BpTAYuBA.d.ts} +2 -103
- package/dist/actions.d.ts +2 -1
- package/dist/api.d.ts +4 -4
- package/dist/api.js +16 -16
- package/dist/api.js.map +1 -1
- package/dist/client.d.ts +2 -1
- package/dist/client.js +16 -16
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/lib/contracts/labels.d.ts +12 -13
- package/dist/lib/contracts/labels.js +6 -6
- package/dist/lib/contracts/labels.js.map +1 -1
- package/dist/lib/contracts/published-cache.d.ts +2 -3
- package/dist/lib/contracts/published-cache.js +1 -1
- package/dist/lib/contracts/published-cache.js.map +1 -1
- package/dist/lib/contracts/values.d.ts +4 -6
- package/dist/lib/contracts/values.js +2 -2
- package/dist/lib/contracts/values.js.map +1 -1
- package/dist/locale.constants-BMBK70YM.d.ts +104 -0
- package/dist/server/routes/labels/[id]/index.js +6 -6
- package/dist/server/routes/labels/[id]/index.js.map +1 -1
- package/dist/server/routes/labels/by-key/[key]/index.js +6 -6
- package/dist/server/routes/labels/by-key/[key]/index.js.map +1 -1
- package/dist/server/routes/labels/index.js +6 -6
- package/dist/server/routes/labels/index.js.map +1 -1
- package/dist/server/routes/published-cache/index.js +1 -1
- package/dist/server/routes/published-cache/index.js.map +1 -1
- package/dist/server/routes/values/[labelId]/[version]/index.js +2 -2
- package/dist/server/routes/values/[labelId]/[version]/index.js.map +1 -1
- package/dist/server/routes/values/[labelId]/index.js +2 -2
- package/dist/server/routes/values/[labelId]/index.js.map +1 -1
- package/dist/server.d.ts +2 -10
- package/dist/server.js +569 -655
- package/dist/server.js.map +1 -1
- package/package.json +3 -3
package/dist/api.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
// src/api/index.ts
|
|
2
2
|
import { client as client5 } from "@spfn/core/client";
|
|
3
3
|
|
|
4
|
-
// src/api/
|
|
4
|
+
// src/api/cms-labels.ts
|
|
5
5
|
import { client } from "@spfn/core/client";
|
|
6
6
|
|
|
7
7
|
// src/lib/contracts/labels.ts
|
|
8
8
|
import { Type } from "@sinclair/typebox";
|
|
9
9
|
var getLabelsContract = {
|
|
10
10
|
method: "GET",
|
|
11
|
-
path: "/labels",
|
|
11
|
+
path: "/_cms/labels",
|
|
12
12
|
query: Type.Object({
|
|
13
13
|
section: Type.Optional(Type.String({ description: "\uC139\uC158\uC73C\uB85C \uD544\uD130\uB9C1 (\uC608: home, why-futureplay)" })),
|
|
14
14
|
limit: Type.Optional(Type.Number({ minimum: 1, maximum: 100, default: 20, description: "\uD398\uC774\uC9C0\uB2F9 \uD56D\uBAA9 \uC218" })),
|
|
@@ -32,7 +32,7 @@ var getLabelsContract = {
|
|
|
32
32
|
};
|
|
33
33
|
var createLabelContract = {
|
|
34
34
|
method: "POST",
|
|
35
|
-
path: "/labels",
|
|
35
|
+
path: "/_cms/labels",
|
|
36
36
|
body: Type.Object({
|
|
37
37
|
key: Type.String({
|
|
38
38
|
description: "\uACE0\uC720 \uD0A4 (\uC608: home.hero.title)",
|
|
@@ -70,7 +70,7 @@ var createLabelContract = {
|
|
|
70
70
|
};
|
|
71
71
|
var getLabelContract = {
|
|
72
72
|
method: "GET",
|
|
73
|
-
path: "/labels/:id",
|
|
73
|
+
path: "/_cms/labels/:id",
|
|
74
74
|
params: Type.Object({
|
|
75
75
|
id: Type.String({ description: "\uB77C\uBCA8 ID" })
|
|
76
76
|
}),
|
|
@@ -92,7 +92,7 @@ var getLabelContract = {
|
|
|
92
92
|
};
|
|
93
93
|
var updateLabelContract = {
|
|
94
94
|
method: "PATCH",
|
|
95
|
-
path: "/labels/:id",
|
|
95
|
+
path: "/_cms/labels/:id",
|
|
96
96
|
params: Type.Object({
|
|
97
97
|
id: Type.String({ description: "\uB77C\uBCA8 ID" })
|
|
98
98
|
}),
|
|
@@ -124,7 +124,7 @@ var updateLabelContract = {
|
|
|
124
124
|
};
|
|
125
125
|
var deleteLabelContract = {
|
|
126
126
|
method: "DELETE",
|
|
127
|
-
path: "/labels/:id",
|
|
127
|
+
path: "/_cms/labels/:id",
|
|
128
128
|
params: Type.Object({
|
|
129
129
|
id: Type.String({ description: "\uB77C\uBCA8 ID" })
|
|
130
130
|
}),
|
|
@@ -140,7 +140,7 @@ var deleteLabelContract = {
|
|
|
140
140
|
};
|
|
141
141
|
var getLabelByKeyContract = {
|
|
142
142
|
method: "GET",
|
|
143
|
-
path: "/labels/by-key/:key",
|
|
143
|
+
path: "/_cms/labels/by-key/:key",
|
|
144
144
|
params: Type.Object({
|
|
145
145
|
key: Type.String({ description: "\uB77C\uBCA8 Key (\uC608: home.hero.title)" })
|
|
146
146
|
}),
|
|
@@ -162,7 +162,7 @@ var getLabelByKeyContract = {
|
|
|
162
162
|
])
|
|
163
163
|
};
|
|
164
164
|
|
|
165
|
-
// src/api/
|
|
165
|
+
// src/api/cms-labels.ts
|
|
166
166
|
var CmsLabels = {
|
|
167
167
|
/**
|
|
168
168
|
* GET /_cms/labels
|
|
@@ -186,7 +186,7 @@ var CmsLabels = {
|
|
|
186
186
|
delete: (options) => client.call(deleteLabelContract, options)
|
|
187
187
|
};
|
|
188
188
|
|
|
189
|
-
// src/api/
|
|
189
|
+
// src/api/cms-labels-by-key.ts
|
|
190
190
|
import { client as client2 } from "@spfn/core/client";
|
|
191
191
|
var CmsLabelsByKey = {
|
|
192
192
|
/**
|
|
@@ -195,7 +195,7 @@ var CmsLabelsByKey = {
|
|
|
195
195
|
getById: (options) => client2.call(getLabelByKeyContract, options)
|
|
196
196
|
};
|
|
197
197
|
|
|
198
|
-
// src/api/
|
|
198
|
+
// src/api/cms-published-cache.ts
|
|
199
199
|
import { client as client3 } from "@spfn/core/client";
|
|
200
200
|
|
|
201
201
|
// src/lib/contracts/published-cache.ts
|
|
@@ -209,7 +209,7 @@ var SectionData = Type2.Object({
|
|
|
209
209
|
});
|
|
210
210
|
var getPublishedCacheContract = {
|
|
211
211
|
method: "GET",
|
|
212
|
-
path: "/published-cache",
|
|
212
|
+
path: "/_cms/published-cache",
|
|
213
213
|
query: Type2.Object({
|
|
214
214
|
sections: Type2.Union([
|
|
215
215
|
Type2.String({ description: "\uB2E8\uC77C \uC139\uC158 \uC774\uB984 (\uC608: home)" }),
|
|
@@ -227,7 +227,7 @@ var getPublishedCacheContract = {
|
|
|
227
227
|
])
|
|
228
228
|
};
|
|
229
229
|
|
|
230
|
-
// src/api/
|
|
230
|
+
// src/api/cms-published-cache.ts
|
|
231
231
|
var CmsPublishedCache = {
|
|
232
232
|
/**
|
|
233
233
|
* GET /_cms/published-cache
|
|
@@ -235,7 +235,7 @@ var CmsPublishedCache = {
|
|
|
235
235
|
get: (options) => client3.call(getPublishedCacheContract, options)
|
|
236
236
|
};
|
|
237
237
|
|
|
238
|
-
// src/api/
|
|
238
|
+
// src/api/cms-values.ts
|
|
239
239
|
import { client as client4 } from "@spfn/core/client";
|
|
240
240
|
|
|
241
241
|
// src/lib/contracts/values.ts
|
|
@@ -271,7 +271,7 @@ var LabelValueSchema = Type3.Object({
|
|
|
271
271
|
});
|
|
272
272
|
var saveValuesContract = {
|
|
273
273
|
method: "POST",
|
|
274
|
-
path: "/values/:labelId",
|
|
274
|
+
path: "/_cms/values/:labelId",
|
|
275
275
|
params: Type3.Object({
|
|
276
276
|
labelId: Type3.String({ description: "\uB77C\uBCA8 ID" })
|
|
277
277
|
}),
|
|
@@ -305,7 +305,7 @@ var saveValuesContract = {
|
|
|
305
305
|
};
|
|
306
306
|
var getValuesContract = {
|
|
307
307
|
method: "GET",
|
|
308
|
-
path: "/values/:labelId/:version",
|
|
308
|
+
path: "/_cms/values/:labelId/:version",
|
|
309
309
|
params: Type3.Object({
|
|
310
310
|
labelId: Type3.String({ description: "\uB77C\uBCA8 ID" }),
|
|
311
311
|
version: Type3.String({ description: "\uBC84\uC804 \uBC88\uD638" })
|
|
@@ -334,7 +334,7 @@ var getValuesContract = {
|
|
|
334
334
|
])
|
|
335
335
|
};
|
|
336
336
|
|
|
337
|
-
// src/api/
|
|
337
|
+
// src/api/cms-values.ts
|
|
338
338
|
var CmsValues = {
|
|
339
339
|
/**
|
|
340
340
|
* POST /_cms/values/:labelId
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/api/index.ts","../src/api/CmsLabels.ts","../src/lib/contracts/labels.ts","../src/api/CmsLabelsByKey.ts","../src/api/CmsPublishedCache.ts","../src/lib/contracts/published-cache.ts","../src/api/CmsValues.ts","../src/lib/contracts/values.ts"],"sourcesContent":["/**\n * Auto-generated API Client\n *\n * Generated by @spfn/core codegen\n * DO NOT EDIT MANUALLY\n *\n * @generated 2025-11-01T16:47:27.111Z\n */\n\nexport { client } from '@spfn/core/client';\n\nexport * from './CmsLabels.js';\nexport * from './CmsLabelsByKey.js';\nexport * from './CmsPublishedCache.js';\nexport * from './CmsValues.js';\n\nimport { CmsLabels } from './CmsLabels.js';\nimport { CmsLabelsByKey } from './CmsLabelsByKey.js';\nimport { CmsPublishedCache } from './CmsPublishedCache.js';\nimport { CmsValues } from './CmsValues.js';\n\n/**\n * Type-safe API client\n */\nexport const cmsApi = {\n cmsLabels: CmsLabels,\n cmsLabelsByKey: CmsLabelsByKey,\n cmsPublishedCache: CmsPublishedCache,\n cmsValues: CmsValues\n} as const;\n","/**\n * Auto-generated API Client\n *\n * Generated by @spfn/core codegen\n * DO NOT EDIT MANUALLY\n *\n * @generated 2025-11-01T16:47:27.109Z\n */\n\nimport { client } from '@spfn/core/client';\nimport type { InferContract } from '@spfn/core';\n\nimport { getLabelsContract, createLabelContract, getLabelContract, updateLabelContract, deleteLabelContract } from '@/lib/contracts/labels';\n\n// ============================================\n// Types\n// ============================================\n\nexport type GetLabelsResponse = InferContract<typeof getLabelsContract>['response'];\nexport type GetLabelsQuery = InferContract<typeof getLabelsContract>['query'];\n\nexport type CreateLabelResponse = InferContract<typeof createLabelContract>['response'];\nexport type CreateLabelBody = InferContract<typeof createLabelContract>['body'];\n\nexport type GetLabelResponse = InferContract<typeof getLabelContract>['response'];\nexport type GetLabelParams = InferContract<typeof getLabelContract>['params'];\n\nexport type UpdateLabelResponse = InferContract<typeof updateLabelContract>['response'];\nexport type UpdateLabelParams = InferContract<typeof updateLabelContract>['params'];\nexport type UpdateLabelBody = InferContract<typeof updateLabelContract>['body'];\n\nexport type DeleteLabelResponse = InferContract<typeof deleteLabelContract>['response'];\nexport type DeleteLabelParams = InferContract<typeof deleteLabelContract>['params'];\n\n/**\n * CmsLabels API\n */\nexport const CmsLabels = {\n /**\n * GET /_cms/labels\n */\n get: (options: { query?: GetLabelsQuery }) => client.call(getLabelsContract, options),\n /**\n * POST /_cms/labels\n */\n post: (options: { body: CreateLabelBody }) => client.call(createLabelContract, options),\n /**\n * GET /_cms/labels/:id\n */\n getById: (options: { params: GetLabelParams }) => client.call(getLabelContract, options),\n /**\n * PATCH /_cms/labels/:id\n */\n update: (options: { params: UpdateLabelParams, body: UpdateLabelBody }) => client.call(updateLabelContract, options),\n /**\n * DELETE /_cms/labels/:id\n */\n delete: (options: { params: DeleteLabelParams }) => client.call(deleteLabelContract, options),\n} as const;\n","import { Type } from '@sinclair/typebox';\nimport type { RouteContract } from '@spfn/core/route';\n\n/**\n * CMS Labels Contracts\n *\n * 라벨 메타데이터 관리 API\n */\n\n/**\n * GET /labels - 라벨 목록 조회\n * Final path: /_cms/labels (prefix added from package.json)\n */\nexport const getLabelsContract = {\n method: 'GET' as const,\n path: '/labels',\n query: Type.Object({\n section: Type.Optional(Type.String({ description: '섹션으로 필터링 (예: home, why-futureplay)' })),\n limit: Type.Optional(Type.Number({ minimum: 1, maximum: 100, default: 20, description: '페이지당 항목 수' })),\n offset: Type.Optional(Type.Number({ minimum: 0, default: 0, description: '시작 오프셋' }))\n }),\n response: Type.Object({\n labels: Type.Array(Type.Object({\n id: Type.Number(),\n key: Type.String(),\n section: Type.String(),\n type: Type.String(),\n publishedVersion: Type.Union([Type.Number(), Type.Null()]),\n createdBy: Type.Union([Type.String(), Type.Null()]),\n createdAt: Type.String(),\n updatedAt: Type.String()\n })),\n total: Type.Number(),\n limit: Type.Number(),\n offset: Type.Number()\n })\n} as const satisfies RouteContract;\n\n/**\n * POST /labels - 새 라벨 생성\n */\nexport const createLabelContract = {\n method: 'POST' as const,\n path: '/labels',\n body: Type.Object({\n key: Type.String({\n description: '고유 키 (예: home.hero.title)',\n pattern: '^[a-z0-9-]+\\\\.[a-z0-9-]+\\\\.[a-z0-9-]+$'\n }),\n section: Type.String({\n description: '섹션 이름 (예: home, why-futureplay)',\n pattern: '^[a-z0-9-]+$'\n }),\n type: Type.Union([\n Type.Literal('text'),\n Type.Literal('image'),\n Type.Literal('video'),\n Type.Literal('file'),\n Type.Literal('object')\n ], { description: '값 타입' }),\n createdBy: Type.Optional(Type.String({ description: '생성자 ID' }))\n }),\n response: Type.Union([\n Type.Object({\n id: Type.Number(),\n key: Type.String(),\n section: Type.String(),\n type: Type.String(),\n publishedVersion: Type.Union([Type.Number(), Type.Null()]),\n createdBy: Type.Union([Type.String(), Type.Null()]),\n createdAt: Type.String(),\n updatedAt: Type.String()\n }),\n Type.Object({\n error: Type.String(),\n key: Type.Optional(Type.String())\n })\n ])\n} as const satisfies RouteContract;\n\n/**\n * GET /labels/:id - 라벨 단건 조회\n */\nexport const getLabelContract = {\n method: 'GET' as const,\n path: '/labels/:id',\n params: Type.Object({\n id: Type.String({ description: '라벨 ID' })\n }),\n response: Type.Union([\n Type.Object({\n id: Type.Number(),\n key: Type.String(),\n section: Type.String(),\n type: Type.String(),\n publishedVersion: Type.Union([Type.Number(), Type.Null()]),\n createdBy: Type.Union([Type.String(), Type.Null()]),\n createdAt: Type.String(),\n updatedAt: Type.String()\n }),\n Type.Object({\n error: Type.String()\n })\n ])\n} as const satisfies RouteContract;\n\n/**\n * PATCH /labels/:id - 라벨 메타데이터 수정\n */\nexport const updateLabelContract = {\n method: 'PATCH' as const,\n path: '/labels/:id',\n params: Type.Object({\n id: Type.String({ description: '라벨 ID' })\n }),\n body: Type.Object({\n section: Type.Optional(Type.String({ description: '섹션 변경' })),\n type: Type.Optional(Type.Union([\n Type.Literal('text'),\n Type.Literal('image'),\n Type.Literal('video'),\n Type.Literal('file'),\n Type.Literal('object')\n ]))\n }),\n response: Type.Union([\n Type.Object({\n id: Type.Number(),\n key: Type.String(),\n section: Type.String(),\n type: Type.String(),\n publishedVersion: Type.Union([Type.Number(), Type.Null()]),\n createdBy: Type.Union([Type.String(), Type.Null()]),\n createdAt: Type.String(),\n updatedAt: Type.String()\n }),\n Type.Object({\n error: Type.String()\n })\n ])\n} as const satisfies RouteContract;\n\n/**\n * DELETE /labels/:id - 라벨 삭제\n */\nexport const deleteLabelContract = {\n method: 'DELETE' as const,\n path: '/labels/:id',\n params: Type.Object({\n id: Type.String({ description: '라벨 ID' })\n }),\n response: Type.Union([\n Type.Object({\n success: Type.Boolean(),\n id: Type.Number()\n }),\n Type.Object({\n error: Type.String()\n })\n ])\n} as const satisfies RouteContract;\n\n/**\n * GET /labels/by-key/:key - Key로 라벨 조회\n */\nexport const getLabelByKeyContract = {\n method: 'GET' as const,\n path: '/labels/by-key/:key',\n params: Type.Object({\n key: Type.String({ description: '라벨 Key (예: home.hero.title)' })\n }),\n response: Type.Union([\n Type.Object({\n id: Type.Number(),\n key: Type.String(),\n section: Type.String(),\n type: Type.String(),\n publishedVersion: Type.Union([Type.Number(), Type.Null()]),\n createdBy: Type.Union([Type.String(), Type.Null()]),\n createdAt: Type.String(),\n updatedAt: Type.String()\n }),\n Type.Object({\n error: Type.String(),\n key: Type.Optional(Type.String())\n })\n ])\n} as const satisfies RouteContract;","/**\n * Auto-generated API Client\n *\n * Generated by @spfn/core codegen\n * DO NOT EDIT MANUALLY\n *\n * @generated 2025-11-01T16:47:27.110Z\n */\n\nimport { client } from '@spfn/core/client';\nimport type { InferContract } from '@spfn/core';\n\nimport { getLabelByKeyContract } from '@/lib/contracts/labels';\n\n// ============================================\n// Types\n// ============================================\n\nexport type GetLabelByKeyResponse = InferContract<typeof getLabelByKeyContract>['response'];\nexport type GetLabelByKeyParams = InferContract<typeof getLabelByKeyContract>['params'];\n\n/**\n * CmsLabelsByKey API\n */\nexport const CmsLabelsByKey = {\n /**\n * GET /_cms/labels/by-key/:key\n */\n getById: (options: { params: GetLabelByKeyParams }) => client.call(getLabelByKeyContract, options),\n} as const;\n","/**\n * Auto-generated API Client\n *\n * Generated by @spfn/core codegen\n * DO NOT EDIT MANUALLY\n *\n * @generated 2025-11-01T16:47:27.111Z\n */\n\nimport { client } from '@spfn/core/client';\nimport type { InferContract } from '@spfn/core';\n\nimport { getPublishedCacheContract } from '@/lib/contracts/published-cache';\n\n// ============================================\n// Types\n// ============================================\n\nexport type GetPublishedCacheResponse = InferContract<typeof getPublishedCacheContract>['response'];\nexport type GetPublishedCacheQuery = InferContract<typeof getPublishedCacheContract>['query'];\n\n/**\n * CmsPublishedCache API\n */\nexport const CmsPublishedCache = {\n /**\n * GET /_cms/published-cache\n */\n get: (options: { query?: GetPublishedCacheQuery }) => client.call(getPublishedCacheContract, options),\n} as const;\n","import { Type } from '@sinclair/typebox';\nimport type { RouteContract } from '@spfn/core/route';\n\nconst SectionData = Type.Object({\n section: Type.String(),\n locale: Type.String(),\n content: Type.Record(Type.String(), Type.Any()),\n version: Type.Number(),\n publishedAt: Type.Union([Type.String(), Type.Null()]),\n});\n\n/**\n * GET /published-cache\n * 발행된 콘텐츠 캐시 조회 (단일 또는 여러 섹션)\n * Final path: /_cms/published-cache (prefix added from package.json)\n */\nexport const getPublishedCacheContract = {\n method: 'GET' as const,\n path: '/published-cache',\n query: Type.Object({\n sections: Type.Union([\n Type.String({ description: '단일 섹션 이름 (예: home)' }),\n Type.Array(Type.String(), { description: '여러 섹션 이름 (예: [\"home\", \"footer\"])' })\n ]),\n locale: Type.Optional(Type.String({ default: 'ko', description: '언어 코드' })),\n }),\n response: Type.Union([\n // 성공: 항상 배열로 반환\n Type.Array(SectionData),\n // 에러\n Type.Object({\n error: Type.String()\n })\n ])\n} as const satisfies RouteContract;","/**\n * Auto-generated API Client\n *\n * Generated by @spfn/core codegen\n * DO NOT EDIT MANUALLY\n *\n * @generated 2025-11-01T16:47:27.111Z\n */\n\nimport { client } from '@spfn/core/client';\nimport type { InferContract } from '@spfn/core';\n\nimport { saveValuesContract, getValuesContract } from '@/lib/contracts/values';\n\n// ============================================\n// Types\n// ============================================\n\nexport type SaveValuesResponse = InferContract<typeof saveValuesContract>['response'];\nexport type SaveValuesParams = InferContract<typeof saveValuesContract>['params'];\nexport type SaveValuesBody = InferContract<typeof saveValuesContract>['body'];\n\nexport type GetValuesResponse = InferContract<typeof getValuesContract>['response'];\nexport type GetValuesQuery = InferContract<typeof getValuesContract>['query'];\nexport type GetValuesParams = InferContract<typeof getValuesContract>['params'];\n\n/**\n * CmsValues API\n */\nexport const CmsValues = {\n /**\n * POST /_cms/values/:labelId\n */\n post: (options: { params: SaveValuesParams, body: SaveValuesBody }) => client.call(saveValuesContract, options),\n /**\n * GET /_cms/values/:labelId/:version\n */\n getById: (options: { params: GetValuesParams, query?: GetValuesQuery }) => client.call(getValuesContract, options),\n} as const;\n","import { Type } from '@sinclair/typebox';\nimport type { RouteContract } from '@spfn/core/route';\n\n/**\n * Label Value 타입 정의\n */\nconst LabelValueSchema = Type.Object({\n type: Type.Union([\n Type.Literal('text'),\n Type.Literal('image'),\n Type.Literal('video'),\n Type.Literal('file'),\n Type.Literal('object')\n ]),\n content: Type.Optional(Type.String()), // text type\n url: Type.Optional(Type.String()), // image, video, file types\n alt: Type.Optional(Type.String()), // image type\n width: Type.Optional(Type.Number()), // image type\n height: Type.Optional(Type.Number()), // image type\n thumbnail: Type.Optional(Type.String()), // video type\n duration: Type.Optional(Type.Number()), // video type\n filename: Type.Optional(Type.String()), // file type\n size: Type.Optional(Type.Number()), // file type\n fields: Type.Optional(Type.Any()) // object type - recursive structure\n});\n\n/**\n * POST /values/:labelId - 라벨 값 저장\n * Final path: /_cms/values/:labelId (prefix added from package.json)\n */\nexport const saveValuesContract = {\n method: 'POST' as const,\n path: '/values/:labelId',\n params: Type.Object({\n labelId: Type.String({ description: '라벨 ID' })\n }),\n body: Type.Object({\n version: Type.Number({ description: '버전 번호', minimum: 1 }),\n values: Type.Array(\n Type.Object({\n locale: Type.String({ description: '언어 코드 (ko, en, ja)', default: 'ko' }),\n breakpoint: Type.Optional(Type.Union([\n Type.Literal('sm'),\n Type.Literal('md'),\n Type.Literal('lg'),\n Type.Literal('xl'),\n Type.Literal('2xl'),\n Type.Null()\n ], { description: '반응형 브레이크포인트' })),\n value: LabelValueSchema\n })\n )\n }),\n response: Type.Union([\n Type.Object({\n success: Type.Boolean(),\n saved: Type.Number(),\n version: Type.Number()\n }),\n Type.Object({\n error: Type.String()\n })\n ])\n} as const satisfies RouteContract;\n\n/**\n * GET /values/:labelId/:version - 특정 버전의 값 조회\n * Final path: /_cms/values/:labelId/:version (prefix added from package.json)\n */\nexport const getValuesContract = {\n method: 'GET' as const,\n path: '/values/:labelId/:version',\n params: Type.Object({\n labelId: Type.String({ description: '라벨 ID' }),\n version: Type.String({ description: '버전 번호' })\n }),\n query: Type.Object({\n locale: Type.Optional(Type.String({ description: '언어 코드 (ko, en, ja)' })),\n breakpoint: Type.Optional(Type.String({ description: '반응형 브레이크포인트' }))\n }),\n response: Type.Union([\n Type.Object({\n labelId: Type.Number(),\n version: Type.Number(),\n values: Type.Array(\n Type.Object({\n id: Type.Number(),\n locale: Type.String(),\n breakpoint: Type.Union([Type.String(), Type.Null()]),\n value: Type.Any(),\n createdAt: Type.String()\n })\n )\n }),\n Type.Object({\n error: Type.String()\n })\n ])\n} as const satisfies RouteContract;"],"mappings":"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","names":["client","client","client","client","Type","client","client","Type","client"]}
|
|
1
|
+
{"version":3,"sources":["../src/api/index.ts","../src/api/cms-labels.ts","../src/lib/contracts/labels.ts","../src/api/cms-labels-by-key.ts","../src/api/cms-published-cache.ts","../src/lib/contracts/published-cache.ts","../src/api/cms-values.ts","../src/lib/contracts/values.ts"],"sourcesContent":["/**\n * Auto-generated API Client\n *\n * Generated by @spfn/core codegen\n * DO NOT EDIT MANUALLY\n *\n * @generated 2025-11-02T11:18:13.332Z\n */\n\nexport { client } from '@spfn/core/client';\n\nexport * from './cms-labels.js';\nexport * from './cms-labels-by-key.js';\nexport * from './cms-published-cache.js';\nexport * from './cms-values.js';\n\nimport { CmsLabels } from './cms-labels.js';\nimport { CmsLabelsByKey } from './cms-labels-by-key.js';\nimport { CmsPublishedCache } from './cms-published-cache.js';\nimport { CmsValues } from './cms-values.js';\n\n/**\n * Type-safe API client\n */\nexport const cmsApi = {\n cmsLabels: CmsLabels,\n cmsLabelsByKey: CmsLabelsByKey,\n cmsPublishedCache: CmsPublishedCache,\n cmsValues: CmsValues\n} as const;\n","/**\n * Auto-generated API Client\n *\n * Generated by @spfn/core codegen\n * DO NOT EDIT MANUALLY\n *\n * @generated 2025-11-02T11:18:13.330Z\n */\n\nimport { client } from '@spfn/core/client';\nimport type { InferContract } from '@spfn/core';\n\nimport { getLabelsContract, createLabelContract, getLabelContract, updateLabelContract, deleteLabelContract } from '@/lib/contracts/labels';\n\n// ============================================\n// Types\n// ============================================\n\nexport type GetLabelsResponse = InferContract<typeof getLabelsContract>['response'];\nexport type GetLabelsQuery = InferContract<typeof getLabelsContract>['query'];\n\nexport type CreateLabelResponse = InferContract<typeof createLabelContract>['response'];\nexport type CreateLabelBody = InferContract<typeof createLabelContract>['body'];\n\nexport type GetLabelResponse = InferContract<typeof getLabelContract>['response'];\nexport type GetLabelParams = InferContract<typeof getLabelContract>['params'];\n\nexport type UpdateLabelResponse = InferContract<typeof updateLabelContract>['response'];\nexport type UpdateLabelParams = InferContract<typeof updateLabelContract>['params'];\nexport type UpdateLabelBody = InferContract<typeof updateLabelContract>['body'];\n\nexport type DeleteLabelResponse = InferContract<typeof deleteLabelContract>['response'];\nexport type DeleteLabelParams = InferContract<typeof deleteLabelContract>['params'];\n\n/**\n * CmsLabels API\n */\nexport const CmsLabels = {\n /**\n * GET /_cms/labels\n */\n get: (options: { query?: GetLabelsQuery }) => client.call(getLabelsContract, options),\n /**\n * POST /_cms/labels\n */\n post: (options: { body: CreateLabelBody }) => client.call(createLabelContract, options),\n /**\n * GET /_cms/labels/:id\n */\n getById: (options: { params: GetLabelParams }) => client.call(getLabelContract, options),\n /**\n * PATCH /_cms/labels/:id\n */\n update: (options: { params: UpdateLabelParams, body: UpdateLabelBody }) => client.call(updateLabelContract, options),\n /**\n * DELETE /_cms/labels/:id\n */\n delete: (options: { params: DeleteLabelParams }) => client.call(deleteLabelContract, options),\n} as const;\n","import { Type } from '@sinclair/typebox';\nimport type { RouteContract } from '@spfn/core/route';\n\n/**\n * CMS Labels Contracts\n *\n * 라벨 메타데이터 관리 API\n */\n\n/**\n * GET /_cms/labels - 라벨 목록 조회\n */\nexport const getLabelsContract = {\n method: 'GET' as const,\n path: '/_cms/labels',\n query: Type.Object({\n section: Type.Optional(Type.String({ description: '섹션으로 필터링 (예: home, why-futureplay)' })),\n limit: Type.Optional(Type.Number({ minimum: 1, maximum: 100, default: 20, description: '페이지당 항목 수' })),\n offset: Type.Optional(Type.Number({ minimum: 0, default: 0, description: '시작 오프셋' }))\n }),\n response: Type.Object({\n labels: Type.Array(Type.Object({\n id: Type.Number(),\n key: Type.String(),\n section: Type.String(),\n type: Type.String(),\n publishedVersion: Type.Union([Type.Number(), Type.Null()]),\n createdBy: Type.Union([Type.String(), Type.Null()]),\n createdAt: Type.String(),\n updatedAt: Type.String()\n })),\n total: Type.Number(),\n limit: Type.Number(),\n offset: Type.Number()\n })\n} as const satisfies RouteContract;\n\n/**\n * POST /_cms/labels - 새 라벨 생성\n */\nexport const createLabelContract = {\n method: 'POST' as const,\n path: '/_cms/labels',\n body: Type.Object({\n key: Type.String({\n description: '고유 키 (예: home.hero.title)',\n pattern: '^[a-z0-9-]+\\\\.[a-z0-9-]+\\\\.[a-z0-9-]+$'\n }),\n section: Type.String({\n description: '섹션 이름 (예: home, why-futureplay)',\n pattern: '^[a-z0-9-]+$'\n }),\n type: Type.Union([\n Type.Literal('text'),\n Type.Literal('image'),\n Type.Literal('video'),\n Type.Literal('file'),\n Type.Literal('object')\n ], { description: '값 타입' }),\n createdBy: Type.Optional(Type.String({ description: '생성자 ID' }))\n }),\n response: Type.Union([\n Type.Object({\n id: Type.Number(),\n key: Type.String(),\n section: Type.String(),\n type: Type.String(),\n publishedVersion: Type.Union([Type.Number(), Type.Null()]),\n createdBy: Type.Union([Type.String(), Type.Null()]),\n createdAt: Type.String(),\n updatedAt: Type.String()\n }),\n Type.Object({\n error: Type.String(),\n key: Type.Optional(Type.String())\n })\n ])\n} as const satisfies RouteContract;\n\n/**\n * GET /_cms/labels/:id - 라벨 단건 조회\n */\nexport const getLabelContract = {\n method: 'GET' as const,\n path: '/_cms/labels/:id',\n params: Type.Object({\n id: Type.String({ description: '라벨 ID' })\n }),\n response: Type.Union([\n Type.Object({\n id: Type.Number(),\n key: Type.String(),\n section: Type.String(),\n type: Type.String(),\n publishedVersion: Type.Union([Type.Number(), Type.Null()]),\n createdBy: Type.Union([Type.String(), Type.Null()]),\n createdAt: Type.String(),\n updatedAt: Type.String()\n }),\n Type.Object({\n error: Type.String()\n })\n ])\n} as const satisfies RouteContract;\n\n/**\n * PATCH /_cms/labels/:id - 라벨 메타데이터 수정\n */\nexport const updateLabelContract = {\n method: 'PATCH' as const,\n path: '/_cms/labels/:id',\n params: Type.Object({\n id: Type.String({ description: '라벨 ID' })\n }),\n body: Type.Object({\n section: Type.Optional(Type.String({ description: '섹션 변경' })),\n type: Type.Optional(Type.Union([\n Type.Literal('text'),\n Type.Literal('image'),\n Type.Literal('video'),\n Type.Literal('file'),\n Type.Literal('object')\n ]))\n }),\n response: Type.Union([\n Type.Object({\n id: Type.Number(),\n key: Type.String(),\n section: Type.String(),\n type: Type.String(),\n publishedVersion: Type.Union([Type.Number(), Type.Null()]),\n createdBy: Type.Union([Type.String(), Type.Null()]),\n createdAt: Type.String(),\n updatedAt: Type.String()\n }),\n Type.Object({\n error: Type.String()\n })\n ])\n} as const satisfies RouteContract;\n\n/**\n * DELETE /_cms/labels/:id - 라벨 삭제\n */\nexport const deleteLabelContract = {\n method: 'DELETE' as const,\n path: '/_cms/labels/:id',\n params: Type.Object({\n id: Type.String({ description: '라벨 ID' })\n }),\n response: Type.Union([\n Type.Object({\n success: Type.Boolean(),\n id: Type.Number()\n }),\n Type.Object({\n error: Type.String()\n })\n ])\n} as const satisfies RouteContract;\n\n/**\n * GET /_cms/labels/by-key/:key - Key로 라벨 조회\n */\nexport const getLabelByKeyContract = {\n method: 'GET' as const,\n path: '/_cms/labels/by-key/:key',\n params: Type.Object({\n key: Type.String({ description: '라벨 Key (예: home.hero.title)' })\n }),\n response: Type.Union([\n Type.Object({\n id: Type.Number(),\n key: Type.String(),\n section: Type.String(),\n type: Type.String(),\n publishedVersion: Type.Union([Type.Number(), Type.Null()]),\n createdBy: Type.Union([Type.String(), Type.Null()]),\n createdAt: Type.String(),\n updatedAt: Type.String()\n }),\n Type.Object({\n error: Type.String(),\n key: Type.Optional(Type.String())\n })\n ])\n} as const satisfies RouteContract;","/**\n * Auto-generated API Client\n *\n * Generated by @spfn/core codegen\n * DO NOT EDIT MANUALLY\n *\n * @generated 2025-11-02T11:18:13.331Z\n */\n\nimport { client } from '@spfn/core/client';\nimport type { InferContract } from '@spfn/core';\n\nimport { getLabelByKeyContract } from '@/lib/contracts/labels';\n\n// ============================================\n// Types\n// ============================================\n\nexport type GetLabelByKeyResponse = InferContract<typeof getLabelByKeyContract>['response'];\nexport type GetLabelByKeyParams = InferContract<typeof getLabelByKeyContract>['params'];\n\n/**\n * CmsLabelsByKey API\n */\nexport const CmsLabelsByKey = {\n /**\n * GET /_cms/labels/by-key/:key\n */\n getById: (options: { params: GetLabelByKeyParams }) => client.call(getLabelByKeyContract, options),\n} as const;\n","/**\n * Auto-generated API Client\n *\n * Generated by @spfn/core codegen\n * DO NOT EDIT MANUALLY\n *\n * @generated 2025-11-02T11:18:13.331Z\n */\n\nimport { client } from '@spfn/core/client';\nimport type { InferContract } from '@spfn/core';\n\nimport { getPublishedCacheContract } from '@/lib/contracts/published-cache';\n\n// ============================================\n// Types\n// ============================================\n\nexport type GetPublishedCacheResponse = InferContract<typeof getPublishedCacheContract>['response'];\nexport type GetPublishedCacheQuery = InferContract<typeof getPublishedCacheContract>['query'];\n\n/**\n * CmsPublishedCache API\n */\nexport const CmsPublishedCache = {\n /**\n * GET /_cms/published-cache\n */\n get: (options: { query?: GetPublishedCacheQuery }) => client.call(getPublishedCacheContract, options),\n} as const;\n","import { Type } from '@sinclair/typebox';\nimport type { RouteContract } from '@spfn/core/route';\n\nconst SectionData = Type.Object({\n section: Type.String(),\n locale: Type.String(),\n content: Type.Record(Type.String(), Type.Any()),\n version: Type.Number(),\n publishedAt: Type.Union([Type.String(), Type.Null()]),\n});\n\n/**\n * GET /_cms/published-cache\n * 발행된 콘텐츠 캐시 조회 (단일 또는 여러 섹션)\n */\nexport const getPublishedCacheContract = {\n method: 'GET' as const,\n path: '/_cms/published-cache',\n query: Type.Object({\n sections: Type.Union([\n Type.String({ description: '단일 섹션 이름 (예: home)' }),\n Type.Array(Type.String(), { description: '여러 섹션 이름 (예: [\"home\", \"footer\"])' })\n ]),\n locale: Type.Optional(Type.String({ default: 'ko', description: '언어 코드' })),\n }),\n response: Type.Union([\n // 성공: 항상 배열로 반환\n Type.Array(SectionData),\n // 에러\n Type.Object({\n error: Type.String()\n })\n ])\n} as const satisfies RouteContract;","/**\n * Auto-generated API Client\n *\n * Generated by @spfn/core codegen\n * DO NOT EDIT MANUALLY\n *\n * @generated 2025-11-02T11:18:13.331Z\n */\n\nimport { client } from '@spfn/core/client';\nimport type { InferContract } from '@spfn/core';\n\nimport { saveValuesContract, getValuesContract } from '@/lib/contracts/values';\n\n// ============================================\n// Types\n// ============================================\n\nexport type SaveValuesResponse = InferContract<typeof saveValuesContract>['response'];\nexport type SaveValuesParams = InferContract<typeof saveValuesContract>['params'];\nexport type SaveValuesBody = InferContract<typeof saveValuesContract>['body'];\n\nexport type GetValuesResponse = InferContract<typeof getValuesContract>['response'];\nexport type GetValuesQuery = InferContract<typeof getValuesContract>['query'];\nexport type GetValuesParams = InferContract<typeof getValuesContract>['params'];\n\n/**\n * CmsValues API\n */\nexport const CmsValues = {\n /**\n * POST /_cms/values/:labelId\n */\n post: (options: { params: SaveValuesParams, body: SaveValuesBody }) => client.call(saveValuesContract, options),\n /**\n * GET /_cms/values/:labelId/:version\n */\n getById: (options: { params: GetValuesParams, query?: GetValuesQuery }) => client.call(getValuesContract, options),\n} as const;\n","import { Type } from '@sinclair/typebox';\nimport type { RouteContract } from '@spfn/core/route';\n\n/**\n * Label Value 타입 정의\n */\nconst LabelValueSchema = Type.Object({\n type: Type.Union([\n Type.Literal('text'),\n Type.Literal('image'),\n Type.Literal('video'),\n Type.Literal('file'),\n Type.Literal('object')\n ]),\n content: Type.Optional(Type.String()), // text type\n url: Type.Optional(Type.String()), // image, video, file types\n alt: Type.Optional(Type.String()), // image type\n width: Type.Optional(Type.Number()), // image type\n height: Type.Optional(Type.Number()), // image type\n thumbnail: Type.Optional(Type.String()), // video type\n duration: Type.Optional(Type.Number()), // video type\n filename: Type.Optional(Type.String()), // file type\n size: Type.Optional(Type.Number()), // file type\n fields: Type.Optional(Type.Any()) // object type - recursive structure\n});\n\n/**\n * POST /_cms/values/:labelId - 라벨 값 저장\n */\nexport const saveValuesContract = {\n method: 'POST' as const,\n path: '/_cms/values/:labelId',\n params: Type.Object({\n labelId: Type.String({ description: '라벨 ID' })\n }),\n body: Type.Object({\n version: Type.Number({ description: '버전 번호', minimum: 1 }),\n values: Type.Array(\n Type.Object({\n locale: Type.String({ description: '언어 코드 (ko, en, ja)', default: 'ko' }),\n breakpoint: Type.Optional(Type.Union([\n Type.Literal('sm'),\n Type.Literal('md'),\n Type.Literal('lg'),\n Type.Literal('xl'),\n Type.Literal('2xl'),\n Type.Null()\n ], { description: '반응형 브레이크포인트' })),\n value: LabelValueSchema\n })\n )\n }),\n response: Type.Union([\n Type.Object({\n success: Type.Boolean(),\n saved: Type.Number(),\n version: Type.Number()\n }),\n Type.Object({\n error: Type.String()\n })\n ])\n} as const satisfies RouteContract;\n\n/**\n * GET /_cms/values/:labelId/:version - 특정 버전의 값 조회\n */\nexport const getValuesContract = {\n method: 'GET' as const,\n path: '/_cms/values/:labelId/:version',\n params: Type.Object({\n labelId: Type.String({ description: '라벨 ID' }),\n version: Type.String({ description: '버전 번호' })\n }),\n query: Type.Object({\n locale: Type.Optional(Type.String({ description: '언어 코드 (ko, en, ja)' })),\n breakpoint: Type.Optional(Type.String({ description: '반응형 브레이크포인트' }))\n }),\n response: Type.Union([\n Type.Object({\n labelId: Type.Number(),\n version: Type.Number(),\n values: Type.Array(\n Type.Object({\n id: Type.Number(),\n locale: Type.String(),\n breakpoint: Type.Union([Type.String(), Type.Null()]),\n value: Type.Any(),\n createdAt: Type.String()\n })\n )\n }),\n Type.Object({\n error: Type.String()\n })\n ])\n} as const satisfies RouteContract;"],"mappings":"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","names":["client","client","client","client","Type","client","client","Type","client"]}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SectionData, SectionAPI } from './server.js';
|
|
2
2
|
import * as zustand from 'zustand';
|
|
3
|
-
export {
|
|
3
|
+
export { g as getLocale, b as getLocaleWithInfo, a as getLocales, c as getLocalesWithInfo, s as setLocale } from './actions-BpTAYuBA.js';
|
|
4
|
+
export { L as LOCALE_COOKIE_KEY, d as LOCALE_INFO_MAP, e as LocaleInfo, S as SupportedLocale, c as getDialCode, b as getFlag, g as getLocaleInfo, a as getSupportedLocales, i as isRTL } from './locale.constants-BMBK70YM.js';
|
|
4
5
|
import './index-Dh5FjWzR.js';
|
|
5
6
|
import './server/repositories/index.js';
|
|
6
7
|
import './server/entities/cms-labels.js';
|
package/dist/client.js
CHANGED
|
@@ -7,14 +7,14 @@ import { create } from "zustand";
|
|
|
7
7
|
// src/api/index.ts
|
|
8
8
|
import { client as client5 } from "@spfn/core/client";
|
|
9
9
|
|
|
10
|
-
// src/api/
|
|
10
|
+
// src/api/cms-labels.ts
|
|
11
11
|
import { client } from "@spfn/core/client";
|
|
12
12
|
|
|
13
13
|
// src/lib/contracts/labels.ts
|
|
14
14
|
import { Type } from "@sinclair/typebox";
|
|
15
15
|
var getLabelsContract = {
|
|
16
16
|
method: "GET",
|
|
17
|
-
path: "/labels",
|
|
17
|
+
path: "/_cms/labels",
|
|
18
18
|
query: Type.Object({
|
|
19
19
|
section: Type.Optional(Type.String({ description: "\uC139\uC158\uC73C\uB85C \uD544\uD130\uB9C1 (\uC608: home, why-futureplay)" })),
|
|
20
20
|
limit: Type.Optional(Type.Number({ minimum: 1, maximum: 100, default: 20, description: "\uD398\uC774\uC9C0\uB2F9 \uD56D\uBAA9 \uC218" })),
|
|
@@ -38,7 +38,7 @@ var getLabelsContract = {
|
|
|
38
38
|
};
|
|
39
39
|
var createLabelContract = {
|
|
40
40
|
method: "POST",
|
|
41
|
-
path: "/labels",
|
|
41
|
+
path: "/_cms/labels",
|
|
42
42
|
body: Type.Object({
|
|
43
43
|
key: Type.String({
|
|
44
44
|
description: "\uACE0\uC720 \uD0A4 (\uC608: home.hero.title)",
|
|
@@ -76,7 +76,7 @@ var createLabelContract = {
|
|
|
76
76
|
};
|
|
77
77
|
var getLabelContract = {
|
|
78
78
|
method: "GET",
|
|
79
|
-
path: "/labels/:id",
|
|
79
|
+
path: "/_cms/labels/:id",
|
|
80
80
|
params: Type.Object({
|
|
81
81
|
id: Type.String({ description: "\uB77C\uBCA8 ID" })
|
|
82
82
|
}),
|
|
@@ -98,7 +98,7 @@ var getLabelContract = {
|
|
|
98
98
|
};
|
|
99
99
|
var updateLabelContract = {
|
|
100
100
|
method: "PATCH",
|
|
101
|
-
path: "/labels/:id",
|
|
101
|
+
path: "/_cms/labels/:id",
|
|
102
102
|
params: Type.Object({
|
|
103
103
|
id: Type.String({ description: "\uB77C\uBCA8 ID" })
|
|
104
104
|
}),
|
|
@@ -130,7 +130,7 @@ var updateLabelContract = {
|
|
|
130
130
|
};
|
|
131
131
|
var deleteLabelContract = {
|
|
132
132
|
method: "DELETE",
|
|
133
|
-
path: "/labels/:id",
|
|
133
|
+
path: "/_cms/labels/:id",
|
|
134
134
|
params: Type.Object({
|
|
135
135
|
id: Type.String({ description: "\uB77C\uBCA8 ID" })
|
|
136
136
|
}),
|
|
@@ -146,7 +146,7 @@ var deleteLabelContract = {
|
|
|
146
146
|
};
|
|
147
147
|
var getLabelByKeyContract = {
|
|
148
148
|
method: "GET",
|
|
149
|
-
path: "/labels/by-key/:key",
|
|
149
|
+
path: "/_cms/labels/by-key/:key",
|
|
150
150
|
params: Type.Object({
|
|
151
151
|
key: Type.String({ description: "\uB77C\uBCA8 Key (\uC608: home.hero.title)" })
|
|
152
152
|
}),
|
|
@@ -168,7 +168,7 @@ var getLabelByKeyContract = {
|
|
|
168
168
|
])
|
|
169
169
|
};
|
|
170
170
|
|
|
171
|
-
// src/api/
|
|
171
|
+
// src/api/cms-labels.ts
|
|
172
172
|
var CmsLabels = {
|
|
173
173
|
/**
|
|
174
174
|
* GET /_cms/labels
|
|
@@ -192,7 +192,7 @@ var CmsLabels = {
|
|
|
192
192
|
delete: (options) => client.call(deleteLabelContract, options)
|
|
193
193
|
};
|
|
194
194
|
|
|
195
|
-
// src/api/
|
|
195
|
+
// src/api/cms-labels-by-key.ts
|
|
196
196
|
import { client as client2 } from "@spfn/core/client";
|
|
197
197
|
var CmsLabelsByKey = {
|
|
198
198
|
/**
|
|
@@ -201,7 +201,7 @@ var CmsLabelsByKey = {
|
|
|
201
201
|
getById: (options) => client2.call(getLabelByKeyContract, options)
|
|
202
202
|
};
|
|
203
203
|
|
|
204
|
-
// src/api/
|
|
204
|
+
// src/api/cms-published-cache.ts
|
|
205
205
|
import { client as client3 } from "@spfn/core/client";
|
|
206
206
|
|
|
207
207
|
// src/lib/contracts/published-cache.ts
|
|
@@ -215,7 +215,7 @@ var SectionData = Type2.Object({
|
|
|
215
215
|
});
|
|
216
216
|
var getPublishedCacheContract = {
|
|
217
217
|
method: "GET",
|
|
218
|
-
path: "/published-cache",
|
|
218
|
+
path: "/_cms/published-cache",
|
|
219
219
|
query: Type2.Object({
|
|
220
220
|
sections: Type2.Union([
|
|
221
221
|
Type2.String({ description: "\uB2E8\uC77C \uC139\uC158 \uC774\uB984 (\uC608: home)" }),
|
|
@@ -233,7 +233,7 @@ var getPublishedCacheContract = {
|
|
|
233
233
|
])
|
|
234
234
|
};
|
|
235
235
|
|
|
236
|
-
// src/api/
|
|
236
|
+
// src/api/cms-published-cache.ts
|
|
237
237
|
var CmsPublishedCache = {
|
|
238
238
|
/**
|
|
239
239
|
* GET /_cms/published-cache
|
|
@@ -241,7 +241,7 @@ var CmsPublishedCache = {
|
|
|
241
241
|
get: (options) => client3.call(getPublishedCacheContract, options)
|
|
242
242
|
};
|
|
243
243
|
|
|
244
|
-
// src/api/
|
|
244
|
+
// src/api/cms-values.ts
|
|
245
245
|
import { client as client4 } from "@spfn/core/client";
|
|
246
246
|
|
|
247
247
|
// src/lib/contracts/values.ts
|
|
@@ -277,7 +277,7 @@ var LabelValueSchema = Type3.Object({
|
|
|
277
277
|
});
|
|
278
278
|
var saveValuesContract = {
|
|
279
279
|
method: "POST",
|
|
280
|
-
path: "/values/:labelId",
|
|
280
|
+
path: "/_cms/values/:labelId",
|
|
281
281
|
params: Type3.Object({
|
|
282
282
|
labelId: Type3.String({ description: "\uB77C\uBCA8 ID" })
|
|
283
283
|
}),
|
|
@@ -311,7 +311,7 @@ var saveValuesContract = {
|
|
|
311
311
|
};
|
|
312
312
|
var getValuesContract = {
|
|
313
313
|
method: "GET",
|
|
314
|
-
path: "/values/:labelId/:version",
|
|
314
|
+
path: "/_cms/values/:labelId/:version",
|
|
315
315
|
params: Type3.Object({
|
|
316
316
|
labelId: Type3.String({ description: "\uB77C\uBCA8 ID" }),
|
|
317
317
|
version: Type3.String({ description: "\uBC84\uC804 \uBC88\uD638" })
|
|
@@ -340,7 +340,7 @@ var getValuesContract = {
|
|
|
340
340
|
])
|
|
341
341
|
};
|
|
342
342
|
|
|
343
|
-
// src/api/
|
|
343
|
+
// src/api/cms-values.ts
|
|
344
344
|
var CmsValues = {
|
|
345
345
|
/**
|
|
346
346
|
* POST /_cms/values/:labelId
|