@spfn/cms 0.1.0-alpha.75 → 0.1.0-alpha.77
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/dist/api.d.ts +40 -9
- package/dist/api.js +40 -8
- package/dist/api.js.map +1 -1
- package/dist/client.d.ts +0 -1
- package/dist/client.js +39 -7
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/lib/contracts/labels.d.ts +28 -1
- package/dist/lib/contracts/labels.js +28 -0
- package/dist/lib/contracts/labels.js.map +1 -1
- package/dist/server/entities/index.d.ts +0 -1
- package/dist/server/entities/index.js +36 -69
- package/dist/server/entities/index.js.map +1 -1
- package/dist/server/generators/index.js +43 -73
- package/dist/server/generators/index.js.map +1 -1
- package/dist/server/repositories/index.js +41 -71
- package/dist/server/repositories/index.js.map +1 -1
- package/dist/server/routes/labels/[id]/index.js +68 -71
- package/dist/server/routes/labels/[id]/index.js.map +1 -1
- package/dist/server/routes/labels/[labelId]/admin/index.js +68 -71
- package/dist/server/routes/labels/[labelId]/admin/index.js.map +1 -1
- package/dist/server/routes/labels/[labelId]/publish/index.js +68 -71
- package/dist/server/routes/labels/[labelId]/publish/index.js.map +1 -1
- package/dist/server/routes/labels/[labelId]/versions/index.js +554 -0
- package/dist/server/routes/labels/[labelId]/versions/index.js.map +1 -0
- package/dist/server/routes/labels/_labelId_/versions/index.d.ts +11 -0
- package/dist/server/routes/labels/by-key/[key]/index.js +68 -71
- package/dist/server/routes/labels/by-key/[key]/index.js.map +1 -1
- package/dist/server/routes/labels/index.js +68 -71
- package/dist/server/routes/labels/index.js.map +1 -1
- package/dist/server/routes/published-cache/index.js +37 -69
- package/dist/server/routes/published-cache/index.js.map +1 -1
- package/dist/server/routes/values/[labelId]/[version]/index.js +41 -71
- package/dist/server/routes/values/[labelId]/[version]/index.js.map +1 -1
- package/dist/server/routes/values/[labelId]/index.js +41 -71
- package/dist/server/routes/values/[labelId]/index.js.map +1 -1
- package/dist/server.d.ts +0 -1
- package/dist/server.js +45 -76
- package/dist/server.js.map +1 -1
- package/migrations/0003_rare_runaways.sql +1 -0
- package/migrations/meta/0003_snapshot.json +563 -0
- package/migrations/meta/_journal.json +7 -0
- package/package.json +1 -1
- package/dist/server/entities/cms-label-versions.d.ts +0 -174
- package/dist/server/entities/cms-label-versions.js +0 -76
- package/dist/server/entities/cms-label-versions.js.map +0 -1
package/dist/api.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { InferContract } from '@spfn/core';
|
|
2
2
|
import { saveValuesContract, getValuesContract } from './lib/contracts/values.js';
|
|
3
3
|
import { getPublishedCacheContract, upsertPublishedCacheContract } from './lib/contracts/published-cache.js';
|
|
4
|
-
import { getAdminLabelContract, publishLabelContract, getLabelByKeyContract, getLabelsContract, createLabelContract, getLabelContract, updateLabelContract, deleteLabelContract } from './lib/contracts/labels.js';
|
|
4
|
+
import { getLabelVersionsContract, getAdminLabelContract, publishLabelContract, getLabelByKeyContract, getLabelsContract, createLabelContract, getLabelContract, updateLabelContract, deleteLabelContract } from './lib/contracts/labels.js';
|
|
5
5
|
export { client } from '@spfn/core/client';
|
|
6
6
|
import '@sinclair/typebox';
|
|
7
7
|
|
|
@@ -11,7 +11,7 @@ import '@sinclair/typebox';
|
|
|
11
11
|
* Generated by @spfn/core codegen
|
|
12
12
|
* DO NOT EDIT MANUALLY
|
|
13
13
|
*
|
|
14
|
-
* @generated 2025-11-
|
|
14
|
+
* @generated 2025-11-03T13:40:07.039Z
|
|
15
15
|
*/
|
|
16
16
|
|
|
17
17
|
type SaveValuesResponse = InferContract<typeof saveValuesContract>['response'];
|
|
@@ -27,7 +27,7 @@ type GetValuesParams = InferContract<typeof getValuesContract>['params'];
|
|
|
27
27
|
* Generated by @spfn/core codegen
|
|
28
28
|
* DO NOT EDIT MANUALLY
|
|
29
29
|
*
|
|
30
|
-
* @generated 2025-11-
|
|
30
|
+
* @generated 2025-11-03T13:40:07.038Z
|
|
31
31
|
*/
|
|
32
32
|
|
|
33
33
|
type GetPublishedCacheResponse = InferContract<typeof getPublishedCacheContract>['response'];
|
|
@@ -41,7 +41,19 @@ type UpsertPublishedCacheBody = InferContract<typeof upsertPublishedCacheContrac
|
|
|
41
41
|
* Generated by @spfn/core codegen
|
|
42
42
|
* DO NOT EDIT MANUALLY
|
|
43
43
|
*
|
|
44
|
-
* @generated 2025-11-
|
|
44
|
+
* @generated 2025-11-03T13:40:07.038Z
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
type GetLabelVersionsResponse = InferContract<typeof getLabelVersionsContract>['response'];
|
|
48
|
+
type GetLabelVersionsParams = InferContract<typeof getLabelVersionsContract>['params'];
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Auto-generated API Client
|
|
52
|
+
*
|
|
53
|
+
* Generated by @spfn/core codegen
|
|
54
|
+
* DO NOT EDIT MANUALLY
|
|
55
|
+
*
|
|
56
|
+
* @generated 2025-11-03T13:40:07.038Z
|
|
45
57
|
*/
|
|
46
58
|
|
|
47
59
|
type GetAdminLabelResponse = InferContract<typeof getAdminLabelContract>['response'];
|
|
@@ -53,7 +65,7 @@ type GetAdminLabelParams = InferContract<typeof getAdminLabelContract>['params']
|
|
|
53
65
|
* Generated by @spfn/core codegen
|
|
54
66
|
* DO NOT EDIT MANUALLY
|
|
55
67
|
*
|
|
56
|
-
* @generated 2025-11-
|
|
68
|
+
* @generated 2025-11-03T13:40:07.037Z
|
|
57
69
|
*/
|
|
58
70
|
|
|
59
71
|
type PublishLabelResponse = InferContract<typeof publishLabelContract>['response'];
|
|
@@ -66,7 +78,7 @@ type PublishLabelBody = InferContract<typeof publishLabelContract>['body'];
|
|
|
66
78
|
* Generated by @spfn/core codegen
|
|
67
79
|
* DO NOT EDIT MANUALLY
|
|
68
80
|
*
|
|
69
|
-
* @generated 2025-11-
|
|
81
|
+
* @generated 2025-11-03T13:40:07.037Z
|
|
70
82
|
*/
|
|
71
83
|
|
|
72
84
|
type GetLabelByKeyResponse = InferContract<typeof getLabelByKeyContract>['response'];
|
|
@@ -78,7 +90,7 @@ type GetLabelByKeyParams = InferContract<typeof getLabelByKeyContract>['params']
|
|
|
78
90
|
* Generated by @spfn/core codegen
|
|
79
91
|
* DO NOT EDIT MANUALLY
|
|
80
92
|
*
|
|
81
|
-
* @generated 2025-11-
|
|
93
|
+
* @generated 2025-11-03T13:40:07.036Z
|
|
82
94
|
*/
|
|
83
95
|
|
|
84
96
|
type GetLabelsResponse = InferContract<typeof getLabelsContract>['response'];
|
|
@@ -200,7 +212,6 @@ declare const cmsApi: {
|
|
|
200
212
|
readonly getAdminLabel: (options: {
|
|
201
213
|
params: GetAdminLabelParams;
|
|
202
214
|
}) => Promise<{
|
|
203
|
-
status: "published" | "default-only" | "unpublished" | "modified";
|
|
204
215
|
label: {
|
|
205
216
|
section: string;
|
|
206
217
|
description: string | null;
|
|
@@ -230,6 +241,26 @@ declare const cmsApi: {
|
|
|
230
241
|
labelId: number;
|
|
231
242
|
breakpoint: string | null;
|
|
232
243
|
}[];
|
|
244
|
+
status: "published" | "default-only" | "unpublished" | "modified";
|
|
245
|
+
} | {
|
|
246
|
+
error: string;
|
|
247
|
+
}>;
|
|
248
|
+
readonly getLabelVersions: (options: {
|
|
249
|
+
params: GetLabelVersionsParams;
|
|
250
|
+
}) => Promise<{
|
|
251
|
+
versions: {
|
|
252
|
+
version: number;
|
|
253
|
+
publishedAt: string;
|
|
254
|
+
publishedBy: string | null;
|
|
255
|
+
values: {
|
|
256
|
+
locale: string;
|
|
257
|
+
id: number;
|
|
258
|
+
value: any;
|
|
259
|
+
createdAt: string;
|
|
260
|
+
breakpoint: string | null;
|
|
261
|
+
}[];
|
|
262
|
+
notes: string | null;
|
|
263
|
+
}[];
|
|
233
264
|
} | {
|
|
234
265
|
error: string;
|
|
235
266
|
}>;
|
|
@@ -287,4 +318,4 @@ declare const cmsApi: {
|
|
|
287
318
|
}>;
|
|
288
319
|
};
|
|
289
320
|
|
|
290
|
-
export { type CreateLabelBody, type CreateLabelResponse, type DeleteLabelParams, type DeleteLabelResponse, type GetAdminLabelParams, type GetAdminLabelResponse, type GetLabelByKeyParams, type GetLabelByKeyResponse, type GetLabelParams, type GetLabelResponse, type GetLabelsQuery, type GetLabelsResponse, type GetPublishedCacheQuery, type GetPublishedCacheResponse, type GetValuesParams, type GetValuesQuery, type GetValuesResponse, type PublishLabelBody, type PublishLabelParams, type PublishLabelResponse, type SaveValuesBody, type SaveValuesParams, type SaveValuesResponse, type UpdateLabelBody, type UpdateLabelParams, type UpdateLabelResponse, type UpsertPublishedCacheBody, type UpsertPublishedCacheResponse, cmsApi };
|
|
321
|
+
export { type CreateLabelBody, type CreateLabelResponse, type DeleteLabelParams, type DeleteLabelResponse, type GetAdminLabelParams, type GetAdminLabelResponse, type GetLabelByKeyParams, type GetLabelByKeyResponse, type GetLabelParams, type GetLabelResponse, type GetLabelVersionsParams, type GetLabelVersionsResponse, type GetLabelsQuery, type GetLabelsResponse, type GetPublishedCacheQuery, type GetPublishedCacheResponse, type GetValuesParams, type GetValuesQuery, type GetValuesResponse, type PublishLabelBody, type PublishLabelParams, type PublishLabelResponse, type SaveValuesBody, type SaveValuesParams, type SaveValuesResponse, type UpdateLabelBody, type UpdateLabelParams, type UpdateLabelResponse, type UpsertPublishedCacheBody, type UpsertPublishedCacheResponse, cmsApi };
|
package/dist/api.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/api/index.ts
|
|
2
|
-
import { client as
|
|
2
|
+
import { client as client8 } from "@spfn/core/client";
|
|
3
3
|
|
|
4
4
|
// src/api/cms-labels.ts
|
|
5
5
|
import { client } from "@spfn/core/client";
|
|
@@ -238,6 +238,33 @@ var getAdminLabelContract = {
|
|
|
238
238
|
})
|
|
239
239
|
])
|
|
240
240
|
};
|
|
241
|
+
var getLabelVersionsContract = {
|
|
242
|
+
method: "GET",
|
|
243
|
+
path: "/_cms/labels/:labelId/versions",
|
|
244
|
+
params: Type.Object({
|
|
245
|
+
labelId: Type.String({ description: "\uB77C\uBCA8 ID" })
|
|
246
|
+
}),
|
|
247
|
+
response: Type.Union([
|
|
248
|
+
Type.Object({
|
|
249
|
+
versions: Type.Array(Type.Object({
|
|
250
|
+
version: Type.Number({ description: "\uBC84\uC804 \uBC88\uD638" }),
|
|
251
|
+
publishedAt: Type.String({ description: "\uBC1C\uD589 \uC2DC\uAC01 (ISO 8601)" }),
|
|
252
|
+
publishedBy: Type.Union([Type.String(), Type.Null()], { description: "\uBC1C\uD589\uC790 ID" }),
|
|
253
|
+
notes: Type.Union([Type.String(), Type.Null()], { description: "\uBC1C\uD589 \uB178\uD2B8" }),
|
|
254
|
+
values: Type.Array(Type.Object({
|
|
255
|
+
id: Type.Number(),
|
|
256
|
+
locale: Type.String(),
|
|
257
|
+
breakpoint: Type.Union([Type.String(), Type.Null()]),
|
|
258
|
+
value: Type.Any(),
|
|
259
|
+
createdAt: Type.String()
|
|
260
|
+
}))
|
|
261
|
+
}))
|
|
262
|
+
}),
|
|
263
|
+
Type.Object({
|
|
264
|
+
error: Type.String()
|
|
265
|
+
})
|
|
266
|
+
])
|
|
267
|
+
};
|
|
241
268
|
|
|
242
269
|
// src/api/cms-labels.ts
|
|
243
270
|
var getLabels = (options) => client.call(getLabelsContract, options);
|
|
@@ -258,8 +285,12 @@ var publishLabel = (options) => client3.call(publishLabelContract, options);
|
|
|
258
285
|
import { client as client4 } from "@spfn/core/client";
|
|
259
286
|
var getAdminLabel = (options) => client4.call(getAdminLabelContract, options);
|
|
260
287
|
|
|
261
|
-
// src/api/cms-
|
|
288
|
+
// src/api/cms-labels-versions.ts
|
|
262
289
|
import { client as client5 } from "@spfn/core/client";
|
|
290
|
+
var getLabelVersions = (options) => client5.call(getLabelVersionsContract, options);
|
|
291
|
+
|
|
292
|
+
// src/api/cms-published-cache.ts
|
|
293
|
+
import { client as client6 } from "@spfn/core/client";
|
|
263
294
|
|
|
264
295
|
// src/lib/contracts/published-cache.ts
|
|
265
296
|
import { Type as Type2 } from "@sinclair/typebox";
|
|
@@ -307,11 +338,11 @@ var upsertPublishedCacheContract = {
|
|
|
307
338
|
};
|
|
308
339
|
|
|
309
340
|
// src/api/cms-published-cache.ts
|
|
310
|
-
var getPublishedCache = (options) =>
|
|
311
|
-
var upsertPublishedCache = (options) =>
|
|
341
|
+
var getPublishedCache = (options) => client6.call(getPublishedCacheContract, options);
|
|
342
|
+
var upsertPublishedCache = (options) => client6.call(upsertPublishedCacheContract, options);
|
|
312
343
|
|
|
313
344
|
// src/api/cms-values.ts
|
|
314
|
-
import { client as
|
|
345
|
+
import { client as client7 } from "@spfn/core/client";
|
|
315
346
|
|
|
316
347
|
// src/lib/contracts/values.ts
|
|
317
348
|
import { Type as Type3 } from "@sinclair/typebox";
|
|
@@ -413,8 +444,8 @@ var getValuesContract = {
|
|
|
413
444
|
};
|
|
414
445
|
|
|
415
446
|
// src/api/cms-values.ts
|
|
416
|
-
var saveValues = (options) =>
|
|
417
|
-
var getValues = (options) =>
|
|
447
|
+
var saveValues = (options) => client7.call(saveValuesContract, options);
|
|
448
|
+
var getValues = (options) => client7.call(getValuesContract, options);
|
|
418
449
|
|
|
419
450
|
// src/api/index.ts
|
|
420
451
|
var cmsApi = {
|
|
@@ -426,13 +457,14 @@ var cmsApi = {
|
|
|
426
457
|
getLabelByKey,
|
|
427
458
|
publishLabel,
|
|
428
459
|
getAdminLabel,
|
|
460
|
+
getLabelVersions,
|
|
429
461
|
getPublishedCache,
|
|
430
462
|
upsertPublishedCache,
|
|
431
463
|
saveValues,
|
|
432
464
|
getValues
|
|
433
465
|
};
|
|
434
466
|
export {
|
|
435
|
-
|
|
467
|
+
client8 as client,
|
|
436
468
|
cmsApi
|
|
437
469
|
};
|
|
438
470
|
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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-labels-publish.ts","../src/api/cms-labels-admin.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-03T05:36:08.366Z\n */\n\nexport { client } from '@spfn/core/client';\n\nexport type { GetLabelsResponse, GetLabelsQuery, CreateLabelResponse, CreateLabelBody, GetLabelResponse, GetLabelParams, UpdateLabelResponse, UpdateLabelParams, UpdateLabelBody, DeleteLabelResponse, DeleteLabelParams } from './cms-labels.js';\nexport type { GetLabelByKeyResponse, GetLabelByKeyParams } from './cms-labels-by-key.js';\nexport type { PublishLabelResponse, PublishLabelParams, PublishLabelBody } from './cms-labels-publish.js';\nexport type { GetAdminLabelResponse, GetAdminLabelParams } from './cms-labels-admin.js';\nexport type { GetPublishedCacheResponse, GetPublishedCacheQuery, UpsertPublishedCacheResponse, UpsertPublishedCacheBody } from './cms-published-cache.js';\nexport type { SaveValuesResponse, SaveValuesParams, SaveValuesBody, GetValuesResponse, GetValuesQuery, GetValuesParams } from './cms-values.js';\n\nimport { getLabels, createLabel, getLabel, updateLabel, deleteLabel } from './cms-labels.js';\nimport { getLabelByKey } from './cms-labels-by-key.js';\nimport { publishLabel } from './cms-labels-publish.js';\nimport { getAdminLabel } from './cms-labels-admin.js';\nimport { getPublishedCache, upsertPublishedCache } from './cms-published-cache.js';\nimport { saveValues, getValues } from './cms-values.js';\n\n/**\n * Type-safe API client\n */\nexport const cmsApi = {\n getLabels,\n createLabel,\n getLabel,\n updateLabel,\n deleteLabel,\n getLabelByKey,\n publishLabel,\n getAdminLabel,\n getPublishedCache,\n upsertPublishedCache,\n saveValues,\n getValues\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-03T05:36:08.363Z\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// API Functions\n// ============================================\n\n/**\n * GET /_cms/labels\n */\nexport const getLabels = (options: { query?: GetLabelsQuery }) => client.call(getLabelsContract, options);\n\n/**\n * POST /_cms/labels\n */\nexport const createLabel = (options: { body: CreateLabelBody }) => client.call(createLabelContract, options);\n\n/**\n * GET /_cms/labels/:id\n */\nexport const getLabel = (options: { params: GetLabelParams }) => client.call(getLabelContract, options);\n\n/**\n * PATCH /_cms/labels/:id\n */\nexport const updateLabel = (options: { params: UpdateLabelParams, body: UpdateLabelBody }) => client.call(updateLabelContract, options);\n\n/**\n * DELETE /_cms/labels/:id\n */\nexport const deleteLabel = (options: { params: DeleteLabelParams }) => client.call(deleteLabelContract, options);\n\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 includeDefaultValues: Type.Optional(Type.Boolean({ description: '기본값 포함 여부', default: false }))\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 description: Type.Union([Type.String(), Type.Null()], { description: '라벨 설명' }),\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 defaultValue: Type.Optional(Type.Any({ description: '라벨 정의 파일의 기본값' }))\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 description: Type.Union([Type.String(), Type.Null()]),\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 description: Type.Union([Type.String(), Type.Null()]),\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 description: Type.Union([Type.String(), Type.Null()]),\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 * POST /_cms/labels/:labelId/publish - 라벨 발행 (Draft → Published)\n */\nexport const publishLabelContract = {\n method: 'POST' as const,\n path: '/_cms/labels/:labelId/publish',\n params: Type.Object({\n labelId: Type.String({ description: '라벨 ID' })\n }),\n body: Type.Object({\n notes: Type.Optional(Type.String({ description: '발행 노트 (버전 설명)' })),\n publishedBy: Type.Optional(Type.String({ description: '발행자 ID' }))\n }),\n response: Type.Union([\n Type.Object({\n success: Type.Boolean(),\n labelId: Type.Number(),\n version: Type.Number(),\n message: Type.String()\n }),\n Type.Object({\n error: Type.String()\n })\n ])\n} as const satisfies RouteContract;\n\n/**\n * GET /_cms/labels/:labelId/admin - 관리자용 라벨 조회 (Draft + Published + Status)\n */\nexport const getAdminLabelContract = {\n method: 'GET' as const,\n path: '/_cms/labels/:labelId/admin',\n params: Type.Object({\n labelId: Type.String({ description: '라벨 ID' })\n }),\n response: Type.Union([\n Type.Object({\n label: Type.Object({\n id: Type.Number(),\n key: Type.String(),\n section: Type.String(),\n type: Type.String(),\n description: Type.Union([Type.String(), Type.Null()]),\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 draft: Type.Array(Type.Object({\n id: Type.Number(),\n labelId: Type.Number(),\n version: Type.Null(),\n locale: Type.String(),\n breakpoint: Type.Union([Type.String(), Type.Null()]),\n value: Type.Any(),\n createdAt: Type.String()\n })),\n published: Type.Array(Type.Object({\n id: Type.Number(),\n labelId: Type.Number(),\n version: Type.Number(),\n locale: Type.String(),\n breakpoint: Type.Union([Type.String(), Type.Null()]),\n value: Type.Any(),\n createdAt: Type.String()\n })),\n status: Type.Union([\n Type.Literal('default-only'),\n Type.Literal('unpublished'),\n Type.Literal('published'),\n Type.Literal('modified')\n ])\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-03T05:36:08.364Z\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// API Functions\n// ============================================\n\n/**\n * GET /_cms/labels/by-key/:key\n */\nexport const getLabelByKey = (options: { params: GetLabelByKeyParams }) => client.call(getLabelByKeyContract, options);\n\n","/**\n * Auto-generated API Client\n *\n * Generated by @spfn/core codegen\n * DO NOT EDIT MANUALLY\n *\n * @generated 2025-11-03T05:36:08.364Z\n */\n\nimport { client } from '@spfn/core/client';\nimport type { InferContract } from '@spfn/core';\n\nimport { publishLabelContract } from '@/lib/contracts/labels';\n\n// ============================================\n// Types\n// ============================================\n\nexport type PublishLabelResponse = InferContract<typeof publishLabelContract>['response'];\nexport type PublishLabelParams = InferContract<typeof publishLabelContract>['params'];\nexport type PublishLabelBody = InferContract<typeof publishLabelContract>['body'];\n\n// ============================================\n// API Functions\n// ============================================\n\n/**\n * POST /_cms/labels/:labelId/publish\n */\nexport const publishLabel = (options: { params: PublishLabelParams, body: PublishLabelBody }) => client.call(publishLabelContract, options);\n\n","/**\n * Auto-generated API Client\n *\n * Generated by @spfn/core codegen\n * DO NOT EDIT MANUALLY\n *\n * @generated 2025-11-03T05:36:08.365Z\n */\n\nimport { client } from '@spfn/core/client';\nimport type { InferContract } from '@spfn/core';\n\nimport { getAdminLabelContract } from '@/lib/contracts/labels';\n\n// ============================================\n// Types\n// ============================================\n\nexport type GetAdminLabelResponse = InferContract<typeof getAdminLabelContract>['response'];\nexport type GetAdminLabelParams = InferContract<typeof getAdminLabelContract>['params'];\n\n// ============================================\n// API Functions\n// ============================================\n\n/**\n * GET /_cms/labels/:labelId/admin\n */\nexport const getAdminLabel = (options: { params: GetAdminLabelParams }) => client.call(getAdminLabelContract, options);\n\n","/**\n * Auto-generated API Client\n *\n * Generated by @spfn/core codegen\n * DO NOT EDIT MANUALLY\n *\n * @generated 2025-11-03T05:36:08.365Z\n */\n\nimport { client } from '@spfn/core/client';\nimport type { InferContract } from '@spfn/core';\n\nimport { getPublishedCacheContract, upsertPublishedCacheContract } 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\nexport type UpsertPublishedCacheResponse = InferContract<typeof upsertPublishedCacheContract>['response'];\nexport type UpsertPublishedCacheBody = InferContract<typeof upsertPublishedCacheContract>['body'];\n\n// ============================================\n// API Functions\n// ============================================\n\n/**\n * GET /_cms/published-cache\n */\nexport const getPublishedCache = (options: { query?: GetPublishedCacheQuery }) => client.call(getPublishedCacheContract, options);\n\n/**\n * POST /_cms/published-cache\n */\nexport const upsertPublishedCache = (options: { body: UpsertPublishedCacheBody }) => client.call(upsertPublishedCacheContract, options);\n\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\n/**\n * POST /_cms/published-cache\n * 발행된 콘텐츠 캐시 업데이트/생성 (upsert)\n */\nexport const upsertPublishedCacheContract = {\n method: 'POST' as const,\n path: '/_cms/published-cache',\n body: Type.Object({\n section: Type.String({ description: '섹션 이름 (예: home)' }),\n locale: Type.String({ description: '언어 코드 (예: ko, en, ja)' }),\n content: Type.Record(Type.String(), Type.Any(), { description: '발행할 콘텐츠 (key-value 형태)' }),\n version: Type.Number({ description: '버전 번호' })\n }),\n response: Type.Union([\n SectionData,\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-03T05:36:08.366Z\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// API Functions\n// ============================================\n\n/**\n * POST /_cms/values/:labelId\n */\nexport const saveValues = (options: { params: SaveValuesParams, body: SaveValuesBody }) => client.call(saveValuesContract, options);\n\n/**\n * GET /_cms/values/:labelId/:version\n */\nexport const getValues = (options: { params: GetValuesParams, query?: GetValuesQuery }) => client.call(getValuesContract, options);\n\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 * - version: null → Draft 저장 (덮어쓰기)\n * - version: number → Published 버전 생성 (불변)\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.Union([\n Type.Null({ description: 'Draft 저장 (덮어쓰기)' }),\n Type.Number({ description: '버전 번호 (불변)', minimum: 1 })\n ]),\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.Union([Type.Null(), 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","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-labels-publish.ts","../src/api/cms-labels-admin.ts","../src/api/cms-labels-versions.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-03T13:40:07.039Z\n */\n\nexport { client } from '@spfn/core/client';\n\nexport type { GetLabelsResponse, GetLabelsQuery, CreateLabelResponse, CreateLabelBody, GetLabelResponse, GetLabelParams, UpdateLabelResponse, UpdateLabelParams, UpdateLabelBody, DeleteLabelResponse, DeleteLabelParams } from './cms-labels.js';\nexport type { GetLabelByKeyResponse, GetLabelByKeyParams } from './cms-labels-by-key.js';\nexport type { PublishLabelResponse, PublishLabelParams, PublishLabelBody } from './cms-labels-publish.js';\nexport type { GetAdminLabelResponse, GetAdminLabelParams } from './cms-labels-admin.js';\nexport type { GetLabelVersionsResponse, GetLabelVersionsParams } from './cms-labels-versions.js';\nexport type { GetPublishedCacheResponse, GetPublishedCacheQuery, UpsertPublishedCacheResponse, UpsertPublishedCacheBody } from './cms-published-cache.js';\nexport type { SaveValuesResponse, SaveValuesParams, SaveValuesBody, GetValuesResponse, GetValuesQuery, GetValuesParams } from './cms-values.js';\n\nimport { getLabels, createLabel, getLabel, updateLabel, deleteLabel } from './cms-labels.js';\nimport { getLabelByKey } from './cms-labels-by-key.js';\nimport { publishLabel } from './cms-labels-publish.js';\nimport { getAdminLabel } from './cms-labels-admin.js';\nimport { getLabelVersions } from './cms-labels-versions.js';\nimport { getPublishedCache, upsertPublishedCache } from './cms-published-cache.js';\nimport { saveValues, getValues } from './cms-values.js';\n\n/**\n * Type-safe API client\n */\nexport const cmsApi = {\n getLabels,\n createLabel,\n getLabel,\n updateLabel,\n deleteLabel,\n getLabelByKey,\n publishLabel,\n getAdminLabel,\n getLabelVersions,\n getPublishedCache,\n upsertPublishedCache,\n saveValues,\n getValues\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-03T13:40:07.036Z\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// API Functions\n// ============================================\n\n/**\n * GET /_cms/labels\n */\nexport const getLabels = (options: { query?: GetLabelsQuery }) => client.call(getLabelsContract, options);\n\n/**\n * POST /_cms/labels\n */\nexport const createLabel = (options: { body: CreateLabelBody }) => client.call(createLabelContract, options);\n\n/**\n * GET /_cms/labels/:id\n */\nexport const getLabel = (options: { params: GetLabelParams }) => client.call(getLabelContract, options);\n\n/**\n * PATCH /_cms/labels/:id\n */\nexport const updateLabel = (options: { params: UpdateLabelParams, body: UpdateLabelBody }) => client.call(updateLabelContract, options);\n\n/**\n * DELETE /_cms/labels/:id\n */\nexport const deleteLabel = (options: { params: DeleteLabelParams }) => client.call(deleteLabelContract, options);\n\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 includeDefaultValues: Type.Optional(Type.Boolean({ description: '기본값 포함 여부', default: false }))\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 description: Type.Union([Type.String(), Type.Null()], { description: '라벨 설명' }),\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 defaultValue: Type.Optional(Type.Any({ description: '라벨 정의 파일의 기본값' }))\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 description: Type.Union([Type.String(), Type.Null()]),\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 description: Type.Union([Type.String(), Type.Null()]),\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 description: Type.Union([Type.String(), Type.Null()]),\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 * POST /_cms/labels/:labelId/publish - 라벨 발행 (Draft → Published)\n */\nexport const publishLabelContract = {\n method: 'POST' as const,\n path: '/_cms/labels/:labelId/publish',\n params: Type.Object({\n labelId: Type.String({ description: '라벨 ID' })\n }),\n body: Type.Object({\n notes: Type.Optional(Type.String({ description: '발행 노트 (버전 설명)' })),\n publishedBy: Type.Optional(Type.String({ description: '발행자 ID' }))\n }),\n response: Type.Union([\n Type.Object({\n success: Type.Boolean(),\n labelId: Type.Number(),\n version: Type.Number(),\n message: Type.String()\n }),\n Type.Object({\n error: Type.String()\n })\n ])\n} as const satisfies RouteContract;\n\n/**\n * GET /_cms/labels/:labelId/admin - 관리자용 라벨 조회 (Draft + Published + Status)\n */\nexport const getAdminLabelContract = {\n method: 'GET' as const,\n path: '/_cms/labels/:labelId/admin',\n params: Type.Object({\n labelId: Type.String({ description: '라벨 ID' })\n }),\n response: Type.Union([\n Type.Object({\n label: Type.Object({\n id: Type.Number(),\n key: Type.String(),\n section: Type.String(),\n type: Type.String(),\n description: Type.Union([Type.String(), Type.Null()]),\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 draft: Type.Array(Type.Object({\n id: Type.Number(),\n labelId: Type.Number(),\n version: Type.Null(),\n locale: Type.String(),\n breakpoint: Type.Union([Type.String(), Type.Null()]),\n value: Type.Any(),\n createdAt: Type.String()\n })),\n published: Type.Array(Type.Object({\n id: Type.Number(),\n labelId: Type.Number(),\n version: Type.Number(),\n locale: Type.String(),\n breakpoint: Type.Union([Type.String(), Type.Null()]),\n value: Type.Any(),\n createdAt: Type.String()\n })),\n status: Type.Union([\n Type.Literal('default-only'),\n Type.Literal('unpublished'),\n Type.Literal('published'),\n Type.Literal('modified')\n ])\n }),\n Type.Object({\n error: Type.String()\n })\n ])\n} as const satisfies RouteContract;\n\n/**\n * GET /_cms/labels/:labelId/versions - 라벨 버전 히스토리 조회\n */\nexport const getLabelVersionsContract = {\n method: 'GET' as const,\n path: '/_cms/labels/:labelId/versions',\n params: Type.Object({\n labelId: Type.String({ description: '라벨 ID' })\n }),\n response: Type.Union([\n Type.Object({\n versions: Type.Array(Type.Object({\n version: Type.Number({ description: '버전 번호' }),\n publishedAt: Type.String({ description: '발행 시각 (ISO 8601)' }),\n publishedBy: Type.Union([Type.String(), Type.Null()], { description: '발행자 ID' }),\n notes: Type.Union([Type.String(), Type.Null()], { description: '발행 노트' }),\n values: Type.Array(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;","/**\n * Auto-generated API Client\n *\n * Generated by @spfn/core codegen\n * DO NOT EDIT MANUALLY\n *\n * @generated 2025-11-03T13:40:07.037Z\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// API Functions\n// ============================================\n\n/**\n * GET /_cms/labels/by-key/:key\n */\nexport const getLabelByKey = (options: { params: GetLabelByKeyParams }) => client.call(getLabelByKeyContract, options);\n\n","/**\n * Auto-generated API Client\n *\n * Generated by @spfn/core codegen\n * DO NOT EDIT MANUALLY\n *\n * @generated 2025-11-03T13:40:07.037Z\n */\n\nimport { client } from '@spfn/core/client';\nimport type { InferContract } from '@spfn/core';\n\nimport { publishLabelContract } from '@/lib/contracts/labels';\n\n// ============================================\n// Types\n// ============================================\n\nexport type PublishLabelResponse = InferContract<typeof publishLabelContract>['response'];\nexport type PublishLabelParams = InferContract<typeof publishLabelContract>['params'];\nexport type PublishLabelBody = InferContract<typeof publishLabelContract>['body'];\n\n// ============================================\n// API Functions\n// ============================================\n\n/**\n * POST /_cms/labels/:labelId/publish\n */\nexport const publishLabel = (options: { params: PublishLabelParams, body: PublishLabelBody }) => client.call(publishLabelContract, options);\n\n","/**\n * Auto-generated API Client\n *\n * Generated by @spfn/core codegen\n * DO NOT EDIT MANUALLY\n *\n * @generated 2025-11-03T13:40:07.038Z\n */\n\nimport { client } from '@spfn/core/client';\nimport type { InferContract } from '@spfn/core';\n\nimport { getAdminLabelContract } from '@/lib/contracts/labels';\n\n// ============================================\n// Types\n// ============================================\n\nexport type GetAdminLabelResponse = InferContract<typeof getAdminLabelContract>['response'];\nexport type GetAdminLabelParams = InferContract<typeof getAdminLabelContract>['params'];\n\n// ============================================\n// API Functions\n// ============================================\n\n/**\n * GET /_cms/labels/:labelId/admin\n */\nexport const getAdminLabel = (options: { params: GetAdminLabelParams }) => client.call(getAdminLabelContract, options);\n\n","/**\n * Auto-generated API Client\n *\n * Generated by @spfn/core codegen\n * DO NOT EDIT MANUALLY\n *\n * @generated 2025-11-03T13:40:07.038Z\n */\n\nimport { client } from '@spfn/core/client';\nimport type { InferContract } from '@spfn/core';\n\nimport { getLabelVersionsContract } from '@/lib/contracts/labels';\n\n// ============================================\n// Types\n// ============================================\n\nexport type GetLabelVersionsResponse = InferContract<typeof getLabelVersionsContract>['response'];\nexport type GetLabelVersionsParams = InferContract<typeof getLabelVersionsContract>['params'];\n\n// ============================================\n// API Functions\n// ============================================\n\n/**\n * GET /_cms/labels/:labelId/versions\n */\nexport const getLabelVersions = (options: { params: GetLabelVersionsParams }) => client.call(getLabelVersionsContract, options);\n\n","/**\n * Auto-generated API Client\n *\n * Generated by @spfn/core codegen\n * DO NOT EDIT MANUALLY\n *\n * @generated 2025-11-03T13:40:07.038Z\n */\n\nimport { client } from '@spfn/core/client';\nimport type { InferContract } from '@spfn/core';\n\nimport { getPublishedCacheContract, upsertPublishedCacheContract } 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\nexport type UpsertPublishedCacheResponse = InferContract<typeof upsertPublishedCacheContract>['response'];\nexport type UpsertPublishedCacheBody = InferContract<typeof upsertPublishedCacheContract>['body'];\n\n// ============================================\n// API Functions\n// ============================================\n\n/**\n * GET /_cms/published-cache\n */\nexport const getPublishedCache = (options: { query?: GetPublishedCacheQuery }) => client.call(getPublishedCacheContract, options);\n\n/**\n * POST /_cms/published-cache\n */\nexport const upsertPublishedCache = (options: { body: UpsertPublishedCacheBody }) => client.call(upsertPublishedCacheContract, options);\n\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\n/**\n * POST /_cms/published-cache\n * 발행된 콘텐츠 캐시 업데이트/생성 (upsert)\n */\nexport const upsertPublishedCacheContract = {\n method: 'POST' as const,\n path: '/_cms/published-cache',\n body: Type.Object({\n section: Type.String({ description: '섹션 이름 (예: home)' }),\n locale: Type.String({ description: '언어 코드 (예: ko, en, ja)' }),\n content: Type.Record(Type.String(), Type.Any(), { description: '발행할 콘텐츠 (key-value 형태)' }),\n version: Type.Number({ description: '버전 번호' })\n }),\n response: Type.Union([\n SectionData,\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-03T13:40:07.039Z\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// API Functions\n// ============================================\n\n/**\n * POST /_cms/values/:labelId\n */\nexport const saveValues = (options: { params: SaveValuesParams, body: SaveValuesBody }) => client.call(saveValuesContract, options);\n\n/**\n * GET /_cms/values/:labelId/:version\n */\nexport const getValues = (options: { params: GetValuesParams, query?: GetValuesQuery }) => client.call(getValuesContract, options);\n\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 * - version: null → Draft 저장 (덮어쓰기)\n * - version: number → Published 버전 생성 (불변)\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.Union([\n Type.Null({ description: 'Draft 저장 (덮어쓰기)' }),\n Type.Number({ description: '버전 번호 (불변)', minimum: 1 })\n ]),\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.Union([Type.Null(), 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","client","client","client","client","client","client","Type","client","client","Type","client"]}
|
package/dist/client.d.ts
CHANGED
|
@@ -9,7 +9,6 @@ import 'drizzle-orm/pg-core';
|
|
|
9
9
|
import './server/entities/cms-label-values.js';
|
|
10
10
|
import './server/entities/cms-draft-cache.js';
|
|
11
11
|
import './server/entities/cms-published-cache.js';
|
|
12
|
-
import './server/entities/cms-label-versions.js';
|
|
13
12
|
import './server/entities/cms-audit-logs.js';
|
|
14
13
|
import './label-sync-generator-B0EmvtWM.js';
|
|
15
14
|
import '@spfn/core/codegen';
|
package/dist/client.js
CHANGED
|
@@ -5,7 +5,7 @@ import React from "react";
|
|
|
5
5
|
import { create } from "zustand";
|
|
6
6
|
|
|
7
7
|
// src/api/index.ts
|
|
8
|
-
import { client as
|
|
8
|
+
import { client as client8 } from "@spfn/core/client";
|
|
9
9
|
|
|
10
10
|
// src/api/cms-labels.ts
|
|
11
11
|
import { client } from "@spfn/core/client";
|
|
@@ -244,6 +244,33 @@ var getAdminLabelContract = {
|
|
|
244
244
|
})
|
|
245
245
|
])
|
|
246
246
|
};
|
|
247
|
+
var getLabelVersionsContract = {
|
|
248
|
+
method: "GET",
|
|
249
|
+
path: "/_cms/labels/:labelId/versions",
|
|
250
|
+
params: Type.Object({
|
|
251
|
+
labelId: Type.String({ description: "\uB77C\uBCA8 ID" })
|
|
252
|
+
}),
|
|
253
|
+
response: Type.Union([
|
|
254
|
+
Type.Object({
|
|
255
|
+
versions: Type.Array(Type.Object({
|
|
256
|
+
version: Type.Number({ description: "\uBC84\uC804 \uBC88\uD638" }),
|
|
257
|
+
publishedAt: Type.String({ description: "\uBC1C\uD589 \uC2DC\uAC01 (ISO 8601)" }),
|
|
258
|
+
publishedBy: Type.Union([Type.String(), Type.Null()], { description: "\uBC1C\uD589\uC790 ID" }),
|
|
259
|
+
notes: Type.Union([Type.String(), Type.Null()], { description: "\uBC1C\uD589 \uB178\uD2B8" }),
|
|
260
|
+
values: Type.Array(Type.Object({
|
|
261
|
+
id: Type.Number(),
|
|
262
|
+
locale: Type.String(),
|
|
263
|
+
breakpoint: Type.Union([Type.String(), Type.Null()]),
|
|
264
|
+
value: Type.Any(),
|
|
265
|
+
createdAt: Type.String()
|
|
266
|
+
}))
|
|
267
|
+
}))
|
|
268
|
+
}),
|
|
269
|
+
Type.Object({
|
|
270
|
+
error: Type.String()
|
|
271
|
+
})
|
|
272
|
+
])
|
|
273
|
+
};
|
|
247
274
|
|
|
248
275
|
// src/api/cms-labels.ts
|
|
249
276
|
var getLabels = (options) => client.call(getLabelsContract, options);
|
|
@@ -264,8 +291,12 @@ var publishLabel = (options) => client3.call(publishLabelContract, options);
|
|
|
264
291
|
import { client as client4 } from "@spfn/core/client";
|
|
265
292
|
var getAdminLabel = (options) => client4.call(getAdminLabelContract, options);
|
|
266
293
|
|
|
267
|
-
// src/api/cms-
|
|
294
|
+
// src/api/cms-labels-versions.ts
|
|
268
295
|
import { client as client5 } from "@spfn/core/client";
|
|
296
|
+
var getLabelVersions = (options) => client5.call(getLabelVersionsContract, options);
|
|
297
|
+
|
|
298
|
+
// src/api/cms-published-cache.ts
|
|
299
|
+
import { client as client6 } from "@spfn/core/client";
|
|
269
300
|
|
|
270
301
|
// src/lib/contracts/published-cache.ts
|
|
271
302
|
import { Type as Type2 } from "@sinclair/typebox";
|
|
@@ -313,11 +344,11 @@ var upsertPublishedCacheContract = {
|
|
|
313
344
|
};
|
|
314
345
|
|
|
315
346
|
// src/api/cms-published-cache.ts
|
|
316
|
-
var getPublishedCache = (options) =>
|
|
317
|
-
var upsertPublishedCache = (options) =>
|
|
347
|
+
var getPublishedCache = (options) => client6.call(getPublishedCacheContract, options);
|
|
348
|
+
var upsertPublishedCache = (options) => client6.call(upsertPublishedCacheContract, options);
|
|
318
349
|
|
|
319
350
|
// src/api/cms-values.ts
|
|
320
|
-
import { client as
|
|
351
|
+
import { client as client7 } from "@spfn/core/client";
|
|
321
352
|
|
|
322
353
|
// src/lib/contracts/values.ts
|
|
323
354
|
import { Type as Type3 } from "@sinclair/typebox";
|
|
@@ -419,8 +450,8 @@ var getValuesContract = {
|
|
|
419
450
|
};
|
|
420
451
|
|
|
421
452
|
// src/api/cms-values.ts
|
|
422
|
-
var saveValues = (options) =>
|
|
423
|
-
var getValues = (options) =>
|
|
453
|
+
var saveValues = (options) => client7.call(saveValuesContract, options);
|
|
454
|
+
var getValues = (options) => client7.call(getValuesContract, options);
|
|
424
455
|
|
|
425
456
|
// src/api/index.ts
|
|
426
457
|
var cmsApi = {
|
|
@@ -432,6 +463,7 @@ var cmsApi = {
|
|
|
432
463
|
getLabelByKey,
|
|
433
464
|
publishLabel,
|
|
434
465
|
getAdminLabel,
|
|
466
|
+
getLabelVersions,
|
|
435
467
|
getPublishedCache,
|
|
436
468
|
upsertPublishedCache,
|
|
437
469
|
saveValues,
|