@spfn/cms 0.1.0-alpha.6 → 0.1.0-alpha.60
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/actions.d.ts +140 -6
- package/dist/actions.js +97 -10
- package/dist/actions.js.map +1 -1
- package/dist/client.d.ts +43 -9
- package/dist/client.js +406 -56
- package/dist/client.js.map +1 -1
- package/dist/contracts/labels.d.ts +149 -0
- package/dist/contracts/labels.js +166 -0
- package/dist/contracts/labels.js.map +1 -0
- package/dist/contracts/published-cache.d.ts +25 -0
- package/dist/contracts/published-cache.js +32 -0
- package/dist/contracts/published-cache.js.map +1 -0
- package/dist/contracts/values.d.ts +69 -0
- package/dist/contracts/values.js +100 -0
- package/dist/contracts/values.js.map +1 -0
- package/dist/entities/cms-audit-logs.d.ts +15 -70
- package/dist/entities/cms-audit-logs.js +75 -100
- package/dist/entities/cms-audit-logs.js.map +1 -1
- package/dist/entities/cms-draft-cache.d.ts +13 -73
- package/dist/entities/cms-draft-cache.js +35 -109
- package/dist/entities/cms-draft-cache.js.map +1 -1
- package/dist/entities/cms-label-values.d.ts +14 -65
- package/dist/entities/cms-label-values.js +78 -102
- package/dist/entities/cms-label-values.js.map +1 -1
- package/dist/entities/cms-label-versions.d.ts +16 -49
- package/dist/entities/cms-label-versions.js +73 -77
- package/dist/entities/cms-label-versions.js.map +1 -1
- package/dist/entities/cms-labels.d.ts +17 -14
- package/dist/entities/cms-labels.js +39 -45
- package/dist/entities/cms-labels.js.map +1 -1
- package/dist/entities/cms-published-cache.d.ts +14 -69
- package/dist/entities/cms-published-cache.js +33 -100
- package/dist/entities/cms-published-cache.js.map +1 -1
- package/dist/entities/index.d.ts +7 -10
- package/dist/entities/index.js +217 -9
- package/dist/entities/index.js.map +1 -1
- package/dist/generators/index.d.ts +8 -7
- package/dist/generators/index.js +657 -17
- package/dist/generators/index.js.map +1 -1
- package/dist/index.d.ts +134 -20
- package/dist/index.js +1115 -23
- package/dist/index.js.map +1 -1
- package/dist/{generators/label-sync-generator.d.ts → label-sync-generator-lQrcVfja.d.ts} +9 -6
- package/dist/labels/index.d.ts +31 -4
- package/dist/labels/index.js +31 -6
- package/dist/labels/index.js.map +1 -1
- package/dist/repositories/index.d.ts +205 -6
- package/dist/repositories/index.js +435 -8
- package/dist/repositories/index.js.map +1 -1
- package/dist/routes/labels/[id]/index.js +499 -89
- package/dist/routes/labels/[id]/index.js.map +1 -1
- package/dist/routes/labels/{[id] → _id_}/index.d.ts +5 -3
- package/dist/routes/labels/by-key/[key]/index.js +453 -29
- package/dist/routes/labels/by-key/[key]/index.js.map +1 -1
- package/dist/routes/labels/by-key/_key_/index.d.ts +10 -0
- package/dist/routes/labels/index.d.ts +5 -3
- package/dist/routes/labels/index.js +488 -68
- package/dist/routes/labels/index.js.map +1 -1
- package/dist/routes/published-cache/index.d.ts +5 -3
- package/dist/routes/published-cache/index.js +325 -30
- package/dist/routes/published-cache/index.js.map +1 -1
- package/dist/routes/values/[labelId]/[version]/index.js +467 -41
- package/dist/routes/values/[labelId]/[version]/index.js.map +1 -1
- package/dist/routes/values/[labelId]/index.js +463 -39
- package/dist/routes/values/[labelId]/index.js.map +1 -1
- package/dist/routes/values/_labelId_/_version_/index.d.ts +10 -0
- package/dist/routes/values/_labelId_/index.d.ts +10 -0
- package/dist/server.d.ts +17 -7
- package/dist/server.js +263 -252
- package/dist/server.js.map +1 -1
- package/dist/store.d.ts +8 -14
- package/dist/store.js +396 -198
- package/dist/store.js.map +1 -1
- package/dist/types.d.ts +14 -7
- package/dist/types.js +0 -6
- package/dist/types.js.map +1 -1
- package/migrations/0000_condemned_centennial.sql +89 -0
- package/migrations/meta/0000_snapshot.json +687 -0
- package/migrations/meta/_journal.json +13 -0
- package/package.json +33 -16
- package/dist/actions.d.ts.map +0 -1
- package/dist/client.d.ts.map +0 -1
- package/dist/cms.config.d.ts +0 -77
- package/dist/cms.config.d.ts.map +0 -1
- package/dist/cms.config.js +0 -111
- package/dist/cms.config.js.map +0 -1
- package/dist/entities/cms-audit-logs.d.ts.map +0 -1
- package/dist/entities/cms-draft-cache.d.ts.map +0 -1
- package/dist/entities/cms-label-values.d.ts.map +0 -1
- package/dist/entities/cms-label-versions.d.ts.map +0 -1
- package/dist/entities/cms-labels.d.ts.map +0 -1
- package/dist/entities/cms-published-cache.d.ts.map +0 -1
- package/dist/entities/index.d.ts.map +0 -1
- package/dist/generators/index.d.ts.map +0 -1
- package/dist/generators/label-sync-generator.d.ts.map +0 -1
- package/dist/generators/label-sync-generator.js +0 -87
- package/dist/generators/label-sync-generator.js.map +0 -1
- package/dist/helpers/locale.actions.d.ts +0 -132
- package/dist/helpers/locale.actions.d.ts.map +0 -1
- package/dist/helpers/locale.actions.js +0 -210
- package/dist/helpers/locale.actions.js.map +0 -1
- package/dist/helpers/locale.constants.d.ts +0 -10
- package/dist/helpers/locale.constants.d.ts.map +0 -1
- package/dist/helpers/locale.constants.js +0 -10
- package/dist/helpers/locale.constants.js.map +0 -1
- package/dist/helpers/locale.d.ts +0 -17
- package/dist/helpers/locale.d.ts.map +0 -1
- package/dist/helpers/locale.js +0 -20
- package/dist/helpers/locale.js.map +0 -1
- package/dist/helpers/sync.d.ts +0 -41
- package/dist/helpers/sync.d.ts.map +0 -1
- package/dist/helpers/sync.js +0 -309
- package/dist/helpers/sync.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/init.d.ts +0 -31
- package/dist/init.d.ts.map +0 -1
- package/dist/init.js +0 -36
- package/dist/init.js.map +0 -1
- package/dist/labels/helpers.d.ts +0 -31
- package/dist/labels/helpers.d.ts.map +0 -1
- package/dist/labels/helpers.js +0 -60
- package/dist/labels/helpers.js.map +0 -1
- package/dist/labels/index.d.ts.map +0 -1
- package/dist/repositories/cms-draft-cache.repository.d.ts +0 -62
- package/dist/repositories/cms-draft-cache.repository.d.ts.map +0 -1
- package/dist/repositories/cms-draft-cache.repository.js +0 -56
- package/dist/repositories/cms-draft-cache.repository.js.map +0 -1
- package/dist/repositories/cms-label-values.repository.d.ts +0 -32
- package/dist/repositories/cms-label-values.repository.d.ts.map +0 -1
- package/dist/repositories/cms-label-values.repository.js +0 -72
- package/dist/repositories/cms-label-values.repository.js.map +0 -1
- package/dist/repositories/cms-labels.repository.d.ts +0 -53
- package/dist/repositories/cms-labels.repository.d.ts.map +0 -1
- package/dist/repositories/cms-labels.repository.js +0 -77
- package/dist/repositories/cms-labels.repository.js.map +0 -1
- package/dist/repositories/cms-published-cache.repository.d.ts +0 -53
- package/dist/repositories/cms-published-cache.repository.d.ts.map +0 -1
- package/dist/repositories/cms-published-cache.repository.js +0 -54
- package/dist/repositories/cms-published-cache.repository.js.map +0 -1
- package/dist/repositories/index.d.ts.map +0 -1
- package/dist/routes/labels/[id]/contract.d.ts +0 -68
- package/dist/routes/labels/[id]/contract.d.ts.map +0 -1
- package/dist/routes/labels/[id]/contract.js +0 -84
- package/dist/routes/labels/[id]/contract.js.map +0 -1
- package/dist/routes/labels/[id]/index.d.ts.map +0 -1
- package/dist/routes/labels/by-key/[key]/contract.d.ts +0 -24
- package/dist/routes/labels/by-key/[key]/contract.d.ts.map +0 -1
- package/dist/routes/labels/by-key/[key]/contract.js +0 -28
- package/dist/routes/labels/by-key/[key]/contract.js.map +0 -1
- package/dist/routes/labels/by-key/[key]/index.d.ts +0 -8
- package/dist/routes/labels/by-key/[key]/index.d.ts.map +0 -1
- package/dist/routes/labels/contract.d.ts +0 -59
- package/dist/routes/labels/contract.d.ts.map +0 -1
- package/dist/routes/labels/contract.js +0 -75
- package/dist/routes/labels/contract.js.map +0 -1
- package/dist/routes/labels/index.d.ts.map +0 -1
- package/dist/routes/published-cache/contract.d.ts +0 -25
- package/dist/routes/published-cache/contract.d.ts.map +0 -1
- package/dist/routes/published-cache/contract.js +0 -35
- package/dist/routes/published-cache/contract.js.map +0 -1
- package/dist/routes/published-cache/index.d.ts.map +0 -1
- package/dist/routes/values/[labelId]/[version]/contract.d.ts +0 -29
- package/dist/routes/values/[labelId]/[version]/contract.d.ts.map +0 -1
- package/dist/routes/values/[labelId]/[version]/contract.js +0 -33
- package/dist/routes/values/[labelId]/[version]/contract.js.map +0 -1
- package/dist/routes/values/[labelId]/[version]/index.d.ts +0 -8
- package/dist/routes/values/[labelId]/[version]/index.d.ts.map +0 -1
- package/dist/routes/values/[labelId]/contract.d.ts +0 -38
- package/dist/routes/values/[labelId]/contract.d.ts.map +0 -1
- package/dist/routes/values/[labelId]/contract.js +0 -59
- package/dist/routes/values/[labelId]/contract.js.map +0 -1
- package/dist/routes/values/[labelId]/index.d.ts +0 -8
- package/dist/routes/values/[labelId]/index.d.ts.map +0 -1
- package/dist/server.d.ts.map +0 -1
- package/dist/store.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spfn/cms",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.60",
|
|
4
4
|
"description": "SPFN CMS - Content Management System with type-safe labels and Next.js integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -8,47 +8,58 @@
|
|
|
8
8
|
"exports": {
|
|
9
9
|
".": {
|
|
10
10
|
"types": "./dist/index.d.ts",
|
|
11
|
-
"import": "./dist/index.js"
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"require": "./dist/index.js"
|
|
12
13
|
},
|
|
13
14
|
"./server": {
|
|
14
15
|
"types": "./dist/server.d.ts",
|
|
15
|
-
"import": "./dist/server.js"
|
|
16
|
+
"import": "./dist/server.js",
|
|
17
|
+
"require": "./dist/server.js"
|
|
16
18
|
},
|
|
17
19
|
"./client": {
|
|
18
20
|
"types": "./dist/client.d.ts",
|
|
19
|
-
"import": "./dist/client.js"
|
|
21
|
+
"import": "./dist/client.js",
|
|
22
|
+
"require": "./dist/client.js"
|
|
20
23
|
},
|
|
21
24
|
"./actions": {
|
|
22
25
|
"types": "./dist/actions.d.ts",
|
|
23
|
-
"import": "./dist/actions.js"
|
|
26
|
+
"import": "./dist/actions.js",
|
|
27
|
+
"require": "./dist/actions.js"
|
|
24
28
|
},
|
|
25
29
|
"./store": {
|
|
26
30
|
"types": "./dist/store.d.ts",
|
|
27
|
-
"import": "./dist/store.js"
|
|
31
|
+
"import": "./dist/store.js",
|
|
32
|
+
"require": "./dist/store.js"
|
|
28
33
|
},
|
|
29
34
|
"./types": {
|
|
30
35
|
"types": "./dist/types.d.ts",
|
|
31
|
-
"import": "./dist/types.js"
|
|
36
|
+
"import": "./dist/types.js",
|
|
37
|
+
"require": "./dist/types.js"
|
|
32
38
|
},
|
|
33
39
|
"./labels": {
|
|
34
40
|
"types": "./dist/labels/index.d.ts",
|
|
35
|
-
"import": "./dist/labels/index.js"
|
|
41
|
+
"import": "./dist/labels/index.js",
|
|
42
|
+
"require": "./dist/labels/index.js"
|
|
36
43
|
},
|
|
37
44
|
"./generators": {
|
|
38
45
|
"types": "./dist/generators/index.d.ts",
|
|
39
|
-
"import": "./dist/generators/index.js"
|
|
46
|
+
"import": "./dist/generators/index.js",
|
|
47
|
+
"require": "./dist/generators/index.js"
|
|
40
48
|
},
|
|
41
49
|
"./codegen/generators": {
|
|
42
50
|
"types": "./dist/generators/index.d.ts",
|
|
43
|
-
"import": "./dist/generators/index.js"
|
|
51
|
+
"import": "./dist/generators/index.js",
|
|
52
|
+
"require": "./dist/generators/index.js"
|
|
44
53
|
},
|
|
45
54
|
"./repositories": {
|
|
46
55
|
"types": "./dist/repositories/index.d.ts",
|
|
47
|
-
"import": "./dist/repositories/index.js"
|
|
56
|
+
"import": "./dist/repositories/index.js",
|
|
57
|
+
"require": "./dist/repositories/index.js"
|
|
48
58
|
}
|
|
49
59
|
},
|
|
50
60
|
"files": [
|
|
51
61
|
"dist",
|
|
62
|
+
"migrations",
|
|
52
63
|
"README.md"
|
|
53
64
|
],
|
|
54
65
|
"keywords": [
|
|
@@ -71,16 +82,18 @@
|
|
|
71
82
|
"./dist/entities/*.js"
|
|
72
83
|
],
|
|
73
84
|
"routes": {
|
|
74
|
-
"basePath": "/cms",
|
|
75
85
|
"dir": "./dist/routes"
|
|
76
86
|
},
|
|
87
|
+
"migrations": {
|
|
88
|
+
"dir": "./migrations"
|
|
89
|
+
},
|
|
77
90
|
"setupMessage": " 📚 Next steps:\n 1. Import CMS components: import { useLabels } from '@spfn/cms'\n 2. View labels in Drizzle Studio: pnpm spfn db studio\n 3. CMS API available at: http://localhost:8790/cms\n 4. Learn more: https://github.com/spfnio/spfn"
|
|
78
91
|
},
|
|
79
92
|
"peerDependencies": {
|
|
80
93
|
"drizzle-orm": "^0.44.0",
|
|
81
94
|
"next": "^15.0.0",
|
|
82
95
|
"react": "^18.0.0 || ^19.0.0",
|
|
83
|
-
"@spfn/core": "0.1.0-alpha.
|
|
96
|
+
"@spfn/core": "0.1.0-alpha.60"
|
|
84
97
|
},
|
|
85
98
|
"dependencies": {
|
|
86
99
|
"@sinclair/typebox": "^0.34.0",
|
|
@@ -89,13 +102,17 @@
|
|
|
89
102
|
},
|
|
90
103
|
"devDependencies": {
|
|
91
104
|
"@types/react": "^19",
|
|
105
|
+
"drizzle-kit": "^0.31.6",
|
|
92
106
|
"drizzle-typebox": "^0.1.0",
|
|
107
|
+
"glob": "^11.0.3",
|
|
93
108
|
"tsup": "^8.3.5",
|
|
109
|
+
"tsx": "^4.19.2",
|
|
94
110
|
"typescript": "^5"
|
|
95
111
|
},
|
|
96
112
|
"scripts": {
|
|
97
|
-
"build": "
|
|
98
|
-
"watch": "
|
|
99
|
-
"clean": "rm -rf dist"
|
|
113
|
+
"build": "npm run db:generate && tsup",
|
|
114
|
+
"watch": "tsup --watch",
|
|
115
|
+
"clean": "rm -rf dist migrations",
|
|
116
|
+
"db:generate": "drizzle-kit generate && tsx scripts/post-generate.ts"
|
|
100
117
|
}
|
|
101
118
|
}
|
package/dist/actions.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACH,SAAS,EACT,SAAS,EACT,UAAU,GACb,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC"}
|
package/dist/client.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,OAAO,EACH,iBAAiB,EACjB,mBAAmB,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACH,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACtB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAE9E;;GAEG;AACH,eAAO,MAAM,MAAM;IACf;;OAEG;;QAEC;;;WAGG;kCACc;YAAE,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAA;SAAE;;;;;;;;;;;;;;;QAG7E;;;WAGG;oCACgB;YAAE,MAAM,EAAE,aAAa,CAAC,OAAO,gBAAgB,CAAC,CAAC,QAAQ,CAAC,CAAA;SAAE;;;;;;;;;;;;QAG/E;;;WAGG;mCACe;YAAE,IAAI,EAAE,aAAa,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAA;SAAE;;;;;;;;;;;;;QAG7E;;;WAGG;mCACe;YACd,MAAM,EAAE,aAAa,CAAC,OAAO,mBAAmB,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC5D,IAAI,EAAE,aAAa,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;SAC3D;;;;;;;;;;;;QAGD;;;WAGG;mCACe;YAAE,MAAM,EAAE,aAAa,CAAC,OAAO,mBAAmB,CAAC,CAAC,QAAQ,CAAC,CAAA;SAAE;;;;;;;IAIrF;;OAEG;;QAEC;;;WAGG;gCACY;YAAE,KAAK,EAAE,aAAa,CAAC,OAAO,yBAAyB,CAAC,CAAC,OAAO,CAAC,CAAA;SAAE;;;;;;;;;;;;CAGhF,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAGnC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG/D,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC"}
|
package/dist/cms.config.d.ts
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CMS Configuration Module
|
|
3
|
-
*
|
|
4
|
-
* 환경변수 기반 CMS 설정 관리
|
|
5
|
-
* - SPFN_CMS_DEFAULT_LOCALE: 기본 언어 (기본값: 'ko')
|
|
6
|
-
* - SPFN_CMS_SUPPORTED_LOCALES: 지원 언어 목록, 쉼표로 구분 (기본값: 'ko,en')
|
|
7
|
-
* - SPFN_CMS_DETECT_BROWSER_LANGUAGE: 브라우저 언어 자동 감지 (기본값: 'false')
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* CMS 설정 타입
|
|
11
|
-
*/
|
|
12
|
-
export interface CmsConfig {
|
|
13
|
-
/**
|
|
14
|
-
* 기본 언어 코드
|
|
15
|
-
* @example 'ko', 'en', 'ja'
|
|
16
|
-
*/
|
|
17
|
-
defaultLocale: string;
|
|
18
|
-
/**
|
|
19
|
-
* 지원하는 언어 목록
|
|
20
|
-
* @example ['ko', 'en', 'ja']
|
|
21
|
-
*/
|
|
22
|
-
supportedLocales: string[];
|
|
23
|
-
/**
|
|
24
|
-
* 브라우저 언어 자동 감지 여부
|
|
25
|
-
* @default false
|
|
26
|
-
*/
|
|
27
|
-
detectBrowserLanguage: boolean;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* CMS 설정 조회
|
|
31
|
-
*
|
|
32
|
-
* @returns 현재 CMS 설정
|
|
33
|
-
*
|
|
34
|
-
* @example
|
|
35
|
-
* ```tsx
|
|
36
|
-
* import { getCmsConfig } from '@spfn/cms';
|
|
37
|
-
*
|
|
38
|
-
* const config = getCmsConfig();
|
|
39
|
-
* console.log(config.defaultLocale); // 'ko'
|
|
40
|
-
* console.log(config.supportedLocales); // ['ko', 'en']
|
|
41
|
-
* ```
|
|
42
|
-
*/
|
|
43
|
-
export declare function getCmsConfig(): Readonly<CmsConfig>;
|
|
44
|
-
/**
|
|
45
|
-
* CMS 설정 변경 (런타임 오버라이드)
|
|
46
|
-
*
|
|
47
|
-
* 환경변수 설정을 런타임에 오버라이드합니다.
|
|
48
|
-
* 주로 테스트나 특수한 경우에 사용됩니다.
|
|
49
|
-
*
|
|
50
|
-
* @param config - 변경할 설정 (부분 업데이트 가능)
|
|
51
|
-
*
|
|
52
|
-
* @example
|
|
53
|
-
* ```tsx
|
|
54
|
-
* import { configureCms } from '@spfn/cms';
|
|
55
|
-
*
|
|
56
|
-
* // 앱 초기화 시 (선택적)
|
|
57
|
-
* configureCms({
|
|
58
|
-
* defaultLocale: 'en',
|
|
59
|
-
* supportedLocales: ['en', 'ko', 'ja'],
|
|
60
|
-
* detectBrowserLanguage: true,
|
|
61
|
-
* });
|
|
62
|
-
* ```
|
|
63
|
-
*/
|
|
64
|
-
export declare function configureCms(config: Partial<CmsConfig>): void;
|
|
65
|
-
/**
|
|
66
|
-
* 설정 초기화 (환경변수에서 재로드)
|
|
67
|
-
*
|
|
68
|
-
* @example
|
|
69
|
-
* ```tsx
|
|
70
|
-
* import { resetCmsConfig } from '@spfn/cms';
|
|
71
|
-
*
|
|
72
|
-
* // 환경변수 설정으로 되돌리기
|
|
73
|
-
* resetCmsConfig();
|
|
74
|
-
* ```
|
|
75
|
-
*/
|
|
76
|
-
export declare function resetCmsConfig(): void;
|
|
77
|
-
//# sourceMappingURL=cms.config.d.ts.map
|
package/dist/cms.config.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cms.config.d.ts","sourceRoot":"","sources":["../src/cms.config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,WAAW,SAAS;IAEtB;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAE3B;;;OAGG;IACH,qBAAqB,EAAE,OAAO,CAAC;CAClC;AAoDD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,IAAI,QAAQ,CAAC,SAAS,CAAC,CAGlD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI,CAiB7D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAGrC"}
|
package/dist/cms.config.js
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CMS Configuration Module
|
|
3
|
-
*
|
|
4
|
-
* 환경변수 기반 CMS 설정 관리
|
|
5
|
-
* - SPFN_CMS_DEFAULT_LOCALE: 기본 언어 (기본값: 'ko')
|
|
6
|
-
* - SPFN_CMS_SUPPORTED_LOCALES: 지원 언어 목록, 쉼표로 구분 (기본값: 'ko,en')
|
|
7
|
-
* - SPFN_CMS_DETECT_BROWSER_LANGUAGE: 브라우저 언어 자동 감지 (기본값: 'false')
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* 환경변수 읽기 헬퍼
|
|
11
|
-
*/
|
|
12
|
-
function getEnvVar(key, defaultValue) {
|
|
13
|
-
return process.env[key] || defaultValue;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* 환경변수에서 boolean 읽기
|
|
17
|
-
*/
|
|
18
|
-
function getEnvBoolean(key, defaultValue) {
|
|
19
|
-
const value = process.env[key];
|
|
20
|
-
if (value === undefined)
|
|
21
|
-
return defaultValue;
|
|
22
|
-
return value === 'true' || value === '1';
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* 환경변수에서 설정 로드
|
|
26
|
-
*/
|
|
27
|
-
function loadConfigFromEnv() {
|
|
28
|
-
const defaultLocale = getEnvVar('SPFN_CMS_DEFAULT_LOCALE', 'en');
|
|
29
|
-
const supportedLocalesStr = getEnvVar('SPFN_CMS_SUPPORTED_LOCALES', 'en,ko');
|
|
30
|
-
const detectBrowserLanguage = getEnvBoolean('SPFN_CMS_DETECT_BROWSER_LANGUAGE', true);
|
|
31
|
-
const supportedLocales = supportedLocalesStr
|
|
32
|
-
.split(',')
|
|
33
|
-
.map(locale => locale.trim())
|
|
34
|
-
.filter(locale => locale.length > 0);
|
|
35
|
-
// 기본 언어가 지원 목록에 없으면 추가
|
|
36
|
-
if (!supportedLocales.includes(defaultLocale)) {
|
|
37
|
-
supportedLocales.unshift(defaultLocale);
|
|
38
|
-
}
|
|
39
|
-
return {
|
|
40
|
-
defaultLocale,
|
|
41
|
-
supportedLocales,
|
|
42
|
-
detectBrowserLanguage,
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* 현재 설정 (환경변수에서 초기화)
|
|
47
|
-
*/
|
|
48
|
-
let currentConfig = loadConfigFromEnv();
|
|
49
|
-
/**
|
|
50
|
-
* CMS 설정 조회
|
|
51
|
-
*
|
|
52
|
-
* @returns 현재 CMS 설정
|
|
53
|
-
*
|
|
54
|
-
* @example
|
|
55
|
-
* ```tsx
|
|
56
|
-
* import { getCmsConfig } from '@spfn/cms';
|
|
57
|
-
*
|
|
58
|
-
* const config = getCmsConfig();
|
|
59
|
-
* console.log(config.defaultLocale); // 'ko'
|
|
60
|
-
* console.log(config.supportedLocales); // ['ko', 'en']
|
|
61
|
-
* ```
|
|
62
|
-
*/
|
|
63
|
-
export function getCmsConfig() {
|
|
64
|
-
return currentConfig;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* CMS 설정 변경 (런타임 오버라이드)
|
|
68
|
-
*
|
|
69
|
-
* 환경변수 설정을 런타임에 오버라이드합니다.
|
|
70
|
-
* 주로 테스트나 특수한 경우에 사용됩니다.
|
|
71
|
-
*
|
|
72
|
-
* @param config - 변경할 설정 (부분 업데이트 가능)
|
|
73
|
-
*
|
|
74
|
-
* @example
|
|
75
|
-
* ```tsx
|
|
76
|
-
* import { configureCms } from '@spfn/cms';
|
|
77
|
-
*
|
|
78
|
-
* // 앱 초기화 시 (선택적)
|
|
79
|
-
* configureCms({
|
|
80
|
-
* defaultLocale: 'en',
|
|
81
|
-
* supportedLocales: ['en', 'ko', 'ja'],
|
|
82
|
-
* detectBrowserLanguage: true,
|
|
83
|
-
* });
|
|
84
|
-
* ```
|
|
85
|
-
*/
|
|
86
|
-
export function configureCms(config) {
|
|
87
|
-
currentConfig = {
|
|
88
|
-
...currentConfig,
|
|
89
|
-
...config,
|
|
90
|
-
};
|
|
91
|
-
// 기본 언어가 지원 목록에 있는지 확인
|
|
92
|
-
if (config.defaultLocale && !currentConfig.supportedLocales.includes(config.defaultLocale)) {
|
|
93
|
-
console.warn(`[CMS Config] Default locale '${config.defaultLocale}' not in supported locales, adding automatically.`, `Supported locales: [${currentConfig.supportedLocales.join(', ')}]`);
|
|
94
|
-
currentConfig.supportedLocales.unshift(config.defaultLocale);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* 설정 초기화 (환경변수에서 재로드)
|
|
99
|
-
*
|
|
100
|
-
* @example
|
|
101
|
-
* ```tsx
|
|
102
|
-
* import { resetCmsConfig } from '@spfn/cms';
|
|
103
|
-
*
|
|
104
|
-
* // 환경변수 설정으로 되돌리기
|
|
105
|
-
* resetCmsConfig();
|
|
106
|
-
* ```
|
|
107
|
-
*/
|
|
108
|
-
export function resetCmsConfig() {
|
|
109
|
-
currentConfig = loadConfigFromEnv();
|
|
110
|
-
}
|
|
111
|
-
//# sourceMappingURL=cms.config.js.map
|
package/dist/cms.config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cms.config.js","sourceRoot":"","sources":["../src/cms.config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA0BH;;GAEG;AACH,SAAS,SAAS,CAAC,GAAW,EAAE,YAAoB;IAEhD,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,GAAW,EAAE,YAAqB;IAErD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC;IAC7C,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB;IAEtB,MAAM,aAAa,GAAG,SAAS,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC;IACjE,MAAM,mBAAmB,GAAG,SAAS,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;IAC7E,MAAM,qBAAqB,GAAG,aAAa,CAAC,kCAAkC,EAAE,IAAI,CAAC,CAAC;IAEtF,MAAM,gBAAgB,GAAG,mBAAmB;SACvC,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEzC,uBAAuB;IACvB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,EAC7C,CAAC;QACG,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO;QACH,aAAa;QACb,gBAAgB;QAChB,qBAAqB;KACxB,CAAC;AACN,CAAC;AAED;;GAEG;AACH,IAAI,aAAa,GAAc,iBAAiB,EAAE,CAAC;AAEnD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,YAAY;IAExB,OAAO,aAAa,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,YAAY,CAAC,MAA0B;IAEnD,aAAa,GAAG;QACZ,GAAG,aAAa;QAChB,GAAG,MAAM;KACZ,CAAC;IAEF,uBAAuB;IACvB,IAAI,MAAM,CAAC,aAAa,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,EAC1F,CAAC;QACG,OAAO,CAAC,IAAI,CACR,gCAAgC,MAAM,CAAC,aAAa,mDAAmD,EACvG,uBAAuB,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACtE,CAAC;QAEF,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACjE,CAAC;AACL,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc;IAE1B,aAAa,GAAG,iBAAiB,EAAE,CAAC;AACxC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cms-audit-logs.d.ts","sourceRoot":"","sources":["../../src/entities/cms-audit-logs.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsCvB,CAAC;AAGH,MAAM,MAAM,WAAW,GAAG,OAAO,YAAY,CAAC,YAAY,CAAC;AAC3D,MAAM,MAAM,cAAc,GAAG,OAAO,YAAY,CAAC,YAAY,CAAC;AAE9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cms-draft-cache.d.ts","sourceRoot":"","sources":["../../src/entities/cms-draft-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAQH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqCxB,CAAC;AAGH,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,YAAY,CAAC;AAC9D,MAAM,MAAM,gBAAgB,GAAG,OAAO,aAAa,CAAC,YAAY,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8DG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cms-label-values.d.ts","sourceRoot":"","sources":["../../src/entities/cms-label-values.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2CzB,CAAC;AAGH,MAAM,MAAM,aAAa,GAAG,OAAO,cAAc,CAAC,YAAY,CAAC;AAC/D,MAAM,MAAM,gBAAgB,GAAG,OAAO,cAAc,CAAC,YAAY,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cms-label-versions.d.ts","sourceRoot":"","sources":["../../src/entities/cms-label-versions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsC3B,CAAC;AAGH,MAAM,MAAM,eAAe,GAAG,OAAO,gBAAgB,CAAC,YAAY,CAAC;AACnE,MAAM,MAAM,kBAAkB,GAAG,OAAO,gBAAgB,CAAC,YAAY,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cms-labels.d.ts","sourceRoot":"","sources":["../../src/entities/cms-labels.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA0CpB,CAAC;AAGH,MAAM,MAAM,QAAQ,GAAG,OAAO,SAAS,CAAC,YAAY,CAAC;AACrD,MAAM,MAAM,WAAW,GAAG,OAAO,SAAS,CAAC,YAAY,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cms-published-cache.d.ts","sourceRoot":"","sources":["../../src/entities/cms-published-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiC5B,CAAC;AAGH,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,YAAY,CAAC;AACtE,MAAM,MAAM,oBAAoB,GAAG,OAAO,iBAAiB,CAAC,YAAY,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/entities/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAErE;;;GAGG;AACH,eAAO,MAAM,UAAU;;CAEtB,CAAC;AAEF;;GAEG;AACH,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"label-sync-generator.d.ts","sourceRoot":"","sources":["../../src/generators/label-sync-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAOtE,MAAM,WAAW,wBAAwB;IAErC,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,kBAAmB,YAAW,SAAS;IAEhD,IAAI,SAAgB;IACpB,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,GAAE,wBAA6B;IAKjD;;OAEG;IACH,IAAI,aAAa,IAAI,MAAM,EAAE,CAK5B;IAEK,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiElD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAO1F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAGrF"}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Label Sync Generator
|
|
3
|
-
*
|
|
4
|
-
* File-based label sync with JSON definitions
|
|
5
|
-
*
|
|
6
|
-
* Structure:
|
|
7
|
-
* cms/labels/
|
|
8
|
-
* layout/ # Section name
|
|
9
|
-
* nav.json # Label definitions
|
|
10
|
-
* footer.json
|
|
11
|
-
* homepage/
|
|
12
|
-
* hero.json
|
|
13
|
-
*/
|
|
14
|
-
import { logger } from '@spfn/core';
|
|
15
|
-
import { join } from 'path';
|
|
16
|
-
import { syncAll, loadLabelsFromJson } from '../helpers/sync.js';
|
|
17
|
-
const syncLogger = logger.child('label-sync');
|
|
18
|
-
export class LabelSyncGenerator {
|
|
19
|
-
name = 'label-sync';
|
|
20
|
-
labelsDir;
|
|
21
|
-
constructor(config = {}) {
|
|
22
|
-
this.labelsDir = config.labelsDir ?? 'src/cms/labels';
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Watch patterns for label definition files
|
|
26
|
-
*/
|
|
27
|
-
get watchPatterns() {
|
|
28
|
-
return [
|
|
29
|
-
`${this.labelsDir}/**/*.json`,
|
|
30
|
-
];
|
|
31
|
-
}
|
|
32
|
-
async generate(options) {
|
|
33
|
-
const isDevelopment = process.env.NODE_ENV !== 'production';
|
|
34
|
-
if (options.debug) {
|
|
35
|
-
syncLogger.info('Starting label sync...');
|
|
36
|
-
}
|
|
37
|
-
try {
|
|
38
|
-
const labelsPath = join(options.cwd, this.labelsDir);
|
|
39
|
-
// Load labels from JSON files
|
|
40
|
-
const sections = loadLabelsFromJson(labelsPath);
|
|
41
|
-
if (sections.length === 0) {
|
|
42
|
-
syncLogger.warn(`No labels found in ${labelsPath}`);
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
syncLogger.info(`Found ${sections.length} sections`);
|
|
46
|
-
// Sync all sections
|
|
47
|
-
const results = await syncAll(sections, {
|
|
48
|
-
verbose: options.debug ?? false,
|
|
49
|
-
updateExisting: isDevelopment,
|
|
50
|
-
});
|
|
51
|
-
const totalCreated = results.reduce((sum, r) => sum + r.created, 0);
|
|
52
|
-
const totalUpdated = results.reduce((sum, r) => sum + r.updated, 0);
|
|
53
|
-
const totalErrors = results.reduce((sum, r) => sum + r.errors.length, 0);
|
|
54
|
-
if (options.debug || totalCreated > 0 || totalUpdated > 0) {
|
|
55
|
-
syncLogger.info('Label sync completed', {
|
|
56
|
-
sections: results.length,
|
|
57
|
-
created: totalCreated,
|
|
58
|
-
updated: totalUpdated,
|
|
59
|
-
errors: totalErrors,
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
// Log errors if any
|
|
63
|
-
if (totalErrors > 0) {
|
|
64
|
-
results.forEach((result) => {
|
|
65
|
-
result.errors.forEach((error) => {
|
|
66
|
-
syncLogger.error(`[${result.section}] ${error.key}: ${error.error}`);
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
catch (error) {
|
|
72
|
-
syncLogger.error('Label sync failed', error instanceof Error ? error : new Error(String(error)));
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
async onFileChange(filePath, event) {
|
|
76
|
-
syncLogger.info(`Label file ${event}`, { file: filePath });
|
|
77
|
-
// Re-sync all labels when any label file changes
|
|
78
|
-
await this.generate({ cwd: process.cwd(), debug: true });
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Create label sync generator instance
|
|
83
|
-
*/
|
|
84
|
-
export function createLabelSyncGenerator(config) {
|
|
85
|
-
return new LabelSyncGenerator(config);
|
|
86
|
-
}
|
|
87
|
-
//# sourceMappingURL=label-sync-generator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"label-sync-generator.js","sourceRoot":"","sources":["../../src/generators/label-sync-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AAO9C,MAAM,OAAO,kBAAkB;IAE3B,IAAI,GAAG,YAAY,CAAC;IACZ,SAAS,CAAS;IAE1B,YAAY,SAAmC,EAAE;QAE7C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,gBAAgB,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,IAAI,aAAa;QAEb,OAAO;YACH,GAAG,IAAI,CAAC,SAAS,YAAY;SAChC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAyB;QAEpC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;QAE5D,IAAI,OAAO,CAAC,KAAK,EACjB,CAAC;YACG,UAAU,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC9C,CAAC;QAED,IACA,CAAC;YACG,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAErD,8BAA8B;YAC9B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;YAEhD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EACzB,CAAC;gBACG,UAAU,CAAC,IAAI,CAAC,sBAAsB,UAAU,EAAE,CAAC,CAAC;gBACpD,OAAO;YACX,CAAC;YAED,UAAU,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAC;YAErD,oBAAoB;YACpB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE;gBACpC,OAAO,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK;gBAC/B,cAAc,EAAE,aAAa;aAChC,CAAC,CAAC;YAEH,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACpE,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACpE,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAEzE,IAAI,OAAO,CAAC,KAAK,IAAI,YAAY,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC,EACzD,CAAC;gBACG,UAAU,CAAC,IAAI,CAAC,sBAAsB,EAAE;oBACpC,QAAQ,EAAE,OAAO,CAAC,MAAM;oBACxB,OAAO,EAAE,YAAY;oBACrB,OAAO,EAAE,YAAY;oBACrB,MAAM,EAAE,WAAW;iBACtB,CAAC,CAAC;YACP,CAAC;YAED,oBAAoB;YACpB,IAAI,WAAW,GAAG,CAAC,EACnB,CAAC;gBACG,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;oBAEvB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;wBAE5B,UAAU,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;oBACzE,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QACD,OAAO,KAAK,EACZ,CAAC;YACG,UAAU,CAAC,KAAK,CACZ,mBAAmB,EACnB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC5D,CAAC;QACN,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAAgB,EAAE,KAAkC;QAEnE,UAAU,CAAC,IAAI,CAAC,cAAc,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAE3D,iDAAiD;QACjD,MAAM,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAiC;IAEtE,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 현재 locale 가져오기 (Server Action)
|
|
3
|
-
*
|
|
4
|
-
* 서버/클라이언트 컴포넌트 모두에서 사용 가능
|
|
5
|
-
*
|
|
6
|
-
* 우선순위:
|
|
7
|
-
* 1. 쿠키 (사용자가 명시적으로 선택한 언어)
|
|
8
|
-
* 2. 브라우저 언어 감지 (설정에서 활성화된 경우)
|
|
9
|
-
* 3. 시스템 기본 언어 (CMS 설정)
|
|
10
|
-
*
|
|
11
|
-
* @returns 현재 locale (예: 'ko', 'en')
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* ```tsx
|
|
15
|
-
* // Server Component
|
|
16
|
-
* import { getLocale } from '@spfn/cms';
|
|
17
|
-
*
|
|
18
|
-
* export default async function Page()
|
|
19
|
-
* {
|
|
20
|
-
* const locale = await getLocale();
|
|
21
|
-
* return <div>Current locale: {locale}</div>;
|
|
22
|
-
* }
|
|
23
|
-
* ```
|
|
24
|
-
*
|
|
25
|
-
* @example
|
|
26
|
-
* ```tsx
|
|
27
|
-
* // Client Component
|
|
28
|
-
* 'use client';
|
|
29
|
-
* import { getLocale } from '@spfn/cms/client';
|
|
30
|
-
*
|
|
31
|
-
* export default function LanguageSwitcher()
|
|
32
|
-
* {
|
|
33
|
-
* const [locale, setLocale] = useState('');
|
|
34
|
-
*
|
|
35
|
-
* useEffect(() => {
|
|
36
|
-
* getLocale().then(setLocale);
|
|
37
|
-
* }, []);
|
|
38
|
-
*
|
|
39
|
-
* return <div>Current locale: {locale}</div>;
|
|
40
|
-
* }
|
|
41
|
-
* ```
|
|
42
|
-
*/
|
|
43
|
-
export declare function getLocale(): Promise<string>;
|
|
44
|
-
/**
|
|
45
|
-
* Locale 설정하기 (Server Action)
|
|
46
|
-
*
|
|
47
|
-
* 서버/클라이언트 컴포넌트 모두에서 사용 가능
|
|
48
|
-
* 쿠키에 locale을 저장합니다.
|
|
49
|
-
*
|
|
50
|
-
* @param locale - 설정할 locale (예: 'ko', 'en')
|
|
51
|
-
* @throws {Error} 지원하지 않는 locale인 경우
|
|
52
|
-
*
|
|
53
|
-
* @example
|
|
54
|
-
* ```tsx
|
|
55
|
-
* // Server Component (Server Action)
|
|
56
|
-
* import { setLocale } from '@spfn/cms';
|
|
57
|
-
*
|
|
58
|
-
* export default async function Page()
|
|
59
|
-
* {
|
|
60
|
-
* await setLocale('en');
|
|
61
|
-
* return <div>Locale changed</div>;
|
|
62
|
-
* }
|
|
63
|
-
* ```
|
|
64
|
-
*
|
|
65
|
-
* @example
|
|
66
|
-
* ```tsx
|
|
67
|
-
* // Client Component (Server Action)
|
|
68
|
-
* 'use client';
|
|
69
|
-
* import { setLocale } from '@spfn/cms/client';
|
|
70
|
-
*
|
|
71
|
-
* export default function LanguageSwitcher()
|
|
72
|
-
* {
|
|
73
|
-
* const handleChange = async (newLocale: string) =>
|
|
74
|
-
* {
|
|
75
|
-
* await setLocale(newLocale);
|
|
76
|
-
* window.location.reload(); // 페이지 새로고침
|
|
77
|
-
* };
|
|
78
|
-
*
|
|
79
|
-
* return (
|
|
80
|
-
* <button onClick={() => handleChange('en')}>
|
|
81
|
-
* Switch to English
|
|
82
|
-
* </button>
|
|
83
|
-
* );
|
|
84
|
-
* }
|
|
85
|
-
* ```
|
|
86
|
-
*/
|
|
87
|
-
export declare function setLocale(locale: string): Promise<void>;
|
|
88
|
-
/**
|
|
89
|
-
* 지원하는 locale 목록 가져오기 (Server Action)
|
|
90
|
-
*
|
|
91
|
-
* 서버/클라이언트 컴포넌트 모두에서 사용 가능
|
|
92
|
-
*
|
|
93
|
-
* @returns 지원하는 locale 배열 (예: ['ko', 'en', 'ja'])
|
|
94
|
-
*
|
|
95
|
-
* @example
|
|
96
|
-
* ```tsx
|
|
97
|
-
* // Server Component
|
|
98
|
-
* import { getLocales } from '@spfn/cms';
|
|
99
|
-
*
|
|
100
|
-
* export default async function Page()
|
|
101
|
-
* {
|
|
102
|
-
* const locales = await getLocales();
|
|
103
|
-
* return <div>Supported: {locales.join(', ')}</div>;
|
|
104
|
-
* }
|
|
105
|
-
* ```
|
|
106
|
-
*
|
|
107
|
-
* @example
|
|
108
|
-
* ```tsx
|
|
109
|
-
* // Client Component
|
|
110
|
-
* 'use client';
|
|
111
|
-
* import { getLocales } from '@spfn/cms/client';
|
|
112
|
-
*
|
|
113
|
-
* export default function LanguageSwitcher()
|
|
114
|
-
* {
|
|
115
|
-
* const [locales, setLocales] = useState<string[]>([]);
|
|
116
|
-
*
|
|
117
|
-
* useEffect(() => {
|
|
118
|
-
* getLocales().then(setLocales);
|
|
119
|
-
* }, []);
|
|
120
|
-
*
|
|
121
|
-
* return (
|
|
122
|
-
* <div>
|
|
123
|
-
* {locales.map(locale => (
|
|
124
|
-
* <button key={locale}>{locale}</button>
|
|
125
|
-
* ))}
|
|
126
|
-
* </div>
|
|
127
|
-
* );
|
|
128
|
-
* }
|
|
129
|
-
* ```
|
|
130
|
-
*/
|
|
131
|
-
export declare function getLocales(): Promise<string[]>;
|
|
132
|
-
//# sourceMappingURL=locale.actions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"locale.actions.d.ts","sourceRoot":"","sources":["../../src/helpers/locale.actions.ts"],"names":[],"mappings":"AA8DA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAyBjD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB7D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAIpD"}
|