diff --git a/.changeset/purple-birds-know.md b/.changeset/purple-birds-know.md new file mode 100644 index 0000000..0e4f115 --- /dev/null +++ b/.changeset/purple-birds-know.md @@ -0,0 +1,5 @@ +--- +"@greenlabs/rescript-daum-postcode": minor +--- + +Support ReScript v11 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d5cd389..73857a3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,9 +17,9 @@ jobs: uses: actions/checkout@v2 - name: Setup Node.js - uses: actions/setup-node@v2 + uses: actions/setup-node@v4 with: - node-version: '14' + node-version: '20' - name: Install Dependencies run: yarn boot diff --git a/package.json b/package.json index 2e71034..48489a7 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "dependencies": { "@changesets/cli": "^2.24.4", "lerna": "^5.5.0", - "rescript": "11.0.0-rc.8" + "rescript": "^11.0.0-rc.8" }, "private": true, "workspaces": [ @@ -24,4 +24,4 @@ "devDependencies": { "lerna-templater": "^1.4.3" } -} +} \ No newline at end of file diff --git a/packages/rescript-daum-postcode/README.md b/packages/rescript-daum-postcode/README.md index ea3f2b3..2e04312 100644 --- a/packages/rescript-daum-postcode/README.md +++ b/packages/rescript-daum-postcode/README.md @@ -4,6 +4,12 @@ ## 설치하기 +> ReScript 버전 호환 표 +| Compiler | res_daum_postcode | +| -------- | ----------------- | +| v11 | >= v0.2.0 | +| v10 | ~<= v0.1.2 | + 1. 모듈 설치 ```shell @@ -12,7 +18,7 @@ or yarn add @greenlabs/rescript-daum-postcode ``` -2. `bsconfig.json` 의존성 추가하기 +2. `rescript.json` 의존성 추가하기 ```json "bs-dependencies": [ @@ -25,37 +31,36 @@ yarn add @greenlabs/rescript-daum-postcode ```rescript open DaumPostCode -let option = makeOption( - ~oncomplete=data => data->Js.Console.log, - ~onresize=size => size->Js.Console.log, - ~onclose=state => +let daumPostCode = make({ + oncomplete: data => data->Js.Console.log, + onresize: size => size->Js.Console.log, + onclose: state => switch state { - | #FORCE_CLOSE => "fc"->Js.Console.log - | #COMPLETE_CLOSE => "cc"->Js.Console.log + | FORCE_CLOSE => "fc"->Js.Console.log + | COMPLETE_CLOSE => "cc"->Js.Console.log }, - ~onsearch=data => data->Js.Console.log, - ~width=500.0, - ~height=700.0, - (), -) -let daumPostCode = option->make + onsearch: data => data->Js.Console.log, + width: 500.0, + height: 700.0, +}) // 팝업 방식 -let openOption = makeOpenOption( - ~q=`문정동`, - ~left=100.0, - ~top=200.0, - ~popupName="주소검색", - ~autoClose=true, - (), -) -daumPostCode->openPostCode(openOption) +daumPostCode->openPostCode({ + q: "문정동", + left: 100.0, + top: 200.0, + popupName: "주소검색", + autoClose: true, +}) // 임베드 방식 open Webapi -let embedOption = makeEmbedOption(~q=`문정동`, ~autoClose=true) + let div = Dom.document |> Dom.Document.getElementById("search-address") -div->Belt.Option.map(el => daumPostCode->embedPostCode(el, embedOption))->ignore +div->Belt.Option.map(el => daumPostCode->embedPostCode(el, { + q: "문정동", + autoClose: true +}))->ignore ``` ## API diff --git a/packages/rescript-daum-postcode/bsconfig.json b/packages/rescript-daum-postcode/rescript.json similarity index 100% rename from packages/rescript-daum-postcode/bsconfig.json rename to packages/rescript-daum-postcode/rescript.json diff --git a/packages/rescript-daum-postcode/src/DaumPostCode.res b/packages/rescript-daum-postcode/src/DaumPostCode.res index 5629441..4b9f992 100644 --- a/packages/rescript-daum-postcode/src/DaumPostCode.res +++ b/packages/rescript-daum-postcode/src/DaumPostCode.res @@ -1,7 +1,7 @@ type t -type addressType = [#R | #J] // #R 도로명 | #J 지번 -type selected = [#Y | #N] // 선택 상태 -type lang = [#K | #E] // #K 한글주소 | #E 영문주소 +type addressType = R | J // R 도로명 | J 지번 +type selected = Y | N // 선택 상태 +type lang = K | E // K 한글주소 | E 영문주소 type oncompleteResponse = { address: string, @@ -48,52 +48,59 @@ type onresizeResponse = { width: float, height: float, } -type oncloseResponse = [#FORCE_CLOSE | #COMPLETE_CLOSE] +type oncloseResponse = FORCE_CLOSE | COMPLETE_CLOSE type onsearchResponse = {q: string, count: int} -type option -@obj -external makeOption: ( - ~oncomplete: oncompleteResponse => unit=?, - ~onresize: onresizeResponse => unit=?, - ~onclose: oncloseResponse => unit=?, - ~onsearch: onsearchResponse => unit=?, - ~width: float=?, - ~height: float=?, - ~animation: bool=?, - ~focusInput: bool=?, - ~autoMapping: bool=?, - ~shorthand: bool=?, - ~pleaseReadGuide: int=?, - ~pleaseReadGuideTimer: float=?, - ~maxSuggestItems: int=?, - ~showMoreHName: bool=?, - ~hideMapBtn: bool=?, - ~hideEngBtn: bool=?, - ~alwaysShowEngAddr: bool=?, - ~useBannerLink: bool=?, - ~theme: {..}=?, - ~submitMode: bool=?, - unit, -) => option = "" +type themeObj = { + bgColor?: string, // 바탕 배경색 + searchBgColor?: string, // 검색창 배경색 + contentBgColor?: string, // 본문 배경색(검색결과,결과없음,첫화면,검색서제스트) + pageBgColor?: string, // 페이지 배경색 + textColor?: string, // 기본 글자색 + queryTextColor?: string, // 검색창 글자색 + postcodeTextColor?: string, // 우편번호 글자색 + emphTextColor?: string, // 강조 글자색 + outlineColor?: string, // 테두리 +} -@new @scope("daum") external make: option => t = "Postcode" +type params = { + oncomplete?: oncompleteResponse => unit, + onresize?: onresizeResponse => unit, + onclose?: oncloseResponse => unit, + onsearch?: onsearchResponse => unit, + width?: float, + height?: float, + animation?: bool, + focusInput?: bool, + autoMapping?: bool, + shorthand?: bool, + pleaseReadGuide?: int, + pleaseReadGuideTimer?: float, + maxSuggestItems?: int, + showMoreHName?: bool, + hideMapBtn?: bool, + hideEngBtn?: bool, + alwaysShowEngAddr?: bool, + useBannerLink?: bool, + theme?: themeObj, + submitMode?: bool, +} -type openOption -@obj -external makeOpenOption: ( - ~q: string=?, - ~left: float=?, - ~top: float=?, - ~popupName: string=?, - ~autoClose: bool=?, - unit, -) => openOption = "" +@new @scope("daum") external make: params => t = "Postcode" -@send external openPostCode: (t, openOption) => unit = "open" +type openParams = { + q?: string, + left?: float, + top?: float, + popupName?: string, + autoClose?: bool, +} -type embedOption -@obj -external makeEmbedOption: (~q: string=?, ~autoClose: bool=?) => embedOption = "" +@send external openPostCode: (t, openParams) => unit = "open" + +type embedParams = { + q?: string, + autoClose?: bool, +} -@send external embedPostCode: (t, Dom.element, embedOption) => unit = "embed" +@send external embedPostCode: (t, Dom.element, embedParams) => unit = "embed" diff --git a/packages/rescript-hammerjs/bsconfig.json b/packages/rescript-hammerjs/rescript.json similarity index 100% rename from packages/rescript-hammerjs/bsconfig.json rename to packages/rescript-hammerjs/rescript.json diff --git a/packages/rescript-hammerjs/src/HammerJs.res b/packages/rescript-hammerjs/src/HammerJs.res index f73c73c..bb87013 100644 --- a/packages/rescript-hammerjs/src/HammerJs.res +++ b/packages/rescript-hammerjs/src/HammerJs.res @@ -1,4 +1,3 @@ -@deriving({jsConverter: newType}) type direction = | @as(1) DIRECTION_NONE | @as(2) DIRECTION_LEFT @@ -41,7 +40,6 @@ type events = [ | #tap ] -@deriving({jsConverter: newType}) type inputEvents = | @as(1) INPUT_START | @as(2) INPUT_MOVE @@ -68,15 +66,15 @@ module Instance = { velocityX: float, velocityY: float, velocity: float, - direction: abs_direction, - offsetDirection: abs_direction, + direction: direction, + offsetDirection: direction, scale: float, rotation: float, center: position, srcEvent: Dom.event, target: Dom.element, pointerType: pointer, - eventType: abs_inputEvents, + eventType: inputEvents, isFirst: bool, isFinal: bool, pointers: array, diff --git a/packages/rescript-jest/bsconfig.json b/packages/rescript-jest/rescript.json similarity index 100% rename from packages/rescript-jest/bsconfig.json rename to packages/rescript-jest/rescript.json diff --git a/packages/rescript-jest/test/Jest_test.res b/packages/rescript-jest/test/Jest_test.res index 0e9b7b5..62e021b 100644 --- a/packages/rescript-jest/test/Jest_test.res +++ b/packages/rescript-jest/test/Jest_test.res @@ -3,7 +3,7 @@ open! Expect describe("Jest", () => { describe("Test.each1", () => { - Test.each1(["hello", "world"])(. + (Test.each1(["hello", "world"], ...))(. "message: %s", str => { Js.log(str) @@ -12,7 +12,7 @@ describe("Jest", () => { }) describe("Test.each2", () => { - Test.each2([("hello", "world"), ("green", "labs")])(. + (Test.each2([("hello", "world"), ("green", "labs")], ...))(. "message: %s", (str1, str2) => { Js.log2(str1, str2) diff --git a/packages/rescript-next/package.json b/packages/rescript-next/package.json index 325d8b7..7dccd9c 100644 --- a/packages/rescript-next/package.json +++ b/packages/rescript-next/package.json @@ -23,9 +23,9 @@ "directory": "packages/rescript-next" }, "devDependencies": { - "@rescript/react": "^0.10.3" + "@rescript/react": "^0.12.0-alpha.3" }, "peerDependencies": { - "@rescript/react": "^0.10.3" + "@rescript/react": "^0.12.0-alpha.3" } -} +} \ No newline at end of file diff --git a/packages/rescript-next/bsconfig.json b/packages/rescript-next/rescript.json similarity index 100% rename from packages/rescript-next/bsconfig.json rename to packages/rescript-next/rescript.json diff --git a/packages/rescript-nock/package.json b/packages/rescript-nock/package.json index 45770b2..d65dc90 100644 --- a/packages/rescript-nock/package.json +++ b/packages/rescript-nock/package.json @@ -23,9 +23,9 @@ }, "peerDependencies": { "nock": "^13.2.9", - "rescript-webapi": "^0.6.1" + "rescript-webapi": "^0.9.0" }, "devDependencies": { - "rescript-webapi": "^0.6.1" + "rescript-webapi": "^0.9.0" } -} +} \ No newline at end of file diff --git a/packages/rescript-nock/bsconfig.json b/packages/rescript-nock/rescript.json similarity index 100% rename from packages/rescript-nock/bsconfig.json rename to packages/rescript-nock/rescript.json diff --git a/packages/rescript-react-hook-form/package.json b/packages/rescript-react-hook-form/package.json index 9a0071c..bf924f4 100644 --- a/packages/rescript-react-hook-form/package.json +++ b/packages/rescript-react-hook-form/package.json @@ -22,10 +22,10 @@ "directory": "packages/rescript-react-hook-form" }, "devDependencies": { - "@rescript/react": "^0.10.3" + "@rescript/react": "^0.12.0-alpha.3" }, "peerDependencies": { - "@rescript/react": "^0.10.3", + "@rescript/react": "^0.12.0-alpha.3", "react-hook-form": "^7.31.2" } -} +} \ No newline at end of file diff --git a/packages/rescript-react-hook-form/bsconfig.json b/packages/rescript-react-hook-form/rescript.json similarity index 100% rename from packages/rescript-react-hook-form/bsconfig.json rename to packages/rescript-react-hook-form/rescript.json diff --git a/packages/rescript-react-hook-form/src/ReactHookForm.res b/packages/rescript-react-hook-form/src/ReactHookForm.res index e7d9851..9a957bb 100644 --- a/packages/rescript-react-hook-form/src/ReactHookForm.res +++ b/packages/rescript-react-hook-form/src/ReactHookForm.res @@ -202,8 +202,8 @@ module Make = ( let getValue = (form: t) => form->_getValues(T.name) @send - external _setValue: (t, string, T.t, ~option: 'a=?, unit) => unit = "setValue" - let setValue = (form, value) => form->_setValue(T.name, value, ()) + external _setValue: (t, string, T.t, ~option: 'a=?) => unit = "setValue" + let setValue = (form, value) => form->_setValue(T.name, value) let setValueWithOption = ( form, value, diff --git a/packages/rescript-react-hook-form/src/ReactHookForm.resi b/packages/rescript-react-hook-form/src/ReactHookForm.resi index 1524410..2199e89 100644 --- a/packages/rescript-react-hook-form/src/ReactHookForm.resi +++ b/packages/rescript-react-hook-form/src/ReactHookForm.resi @@ -140,7 +140,6 @@ module Make: ( ~shouldValidate: bool=?, ~shouldDirty: bool=?, ~shouldTouch: bool=?, - unit, ) => unit let resetField: t => unit let setError: (t, Error.t) => unit @@ -198,7 +197,6 @@ module Make: ( ~shouldValidate: bool=?, ~shouldDirty: bool=?, ~shouldTouch: bool=?, - unit, ) => unit let resetField: t => unit let setError: (t, Error.t) => unit diff --git a/packages/rescript-react-linkify/package.json b/packages/rescript-react-linkify/package.json index c93db7c..d6f973d 100644 --- a/packages/rescript-react-linkify/package.json +++ b/packages/rescript-react-linkify/package.json @@ -25,9 +25,9 @@ "react-linkify": "^1.0.0-alpha" }, "devDependencies": { - "@rescript/react": "^0.10.3" + "@rescript/react": "^0.12.0-alpha.3" }, "peerDependencies": { - "@rescript/react": "^0.10.3" + "@rescript/react": "^0.12.0-alpha.3" } -} +} \ No newline at end of file diff --git a/packages/rescript-react-linkify/bsconfig.json b/packages/rescript-react-linkify/rescript.json similarity index 100% rename from packages/rescript-react-linkify/bsconfig.json rename to packages/rescript-react-linkify/rescript.json diff --git a/packages/rescript-testing-library/package.json b/packages/rescript-testing-library/package.json index b2f2141..050164b 100644 --- a/packages/rescript-testing-library/package.json +++ b/packages/rescript-testing-library/package.json @@ -24,20 +24,20 @@ }, "peerDependencies": { "@greenlabs/rescript-jest": "^1.0.1", - "@rescript/react": "^0.10.3", + "@rescript/react": "^0.12.0-alpha.3", "@testing-library/dom": "^8.18.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.3.0", "@testing-library/user-event": "^14.4.3", - "rescript-webapi": "^0.6.1" + "rescript-webapi": "^0.9.0" }, "devDependencies": { "@greenlabs/rescript-jest": "^1.0.1", - "@rescript/react": "^0.10.3", + "@rescript/react": "^0.12.0-alpha.3", "@testing-library/dom": "^8.18.0", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^14.4.3", - "rescript-webapi": "^0.6.1" + "rescript-webapi": "^0.9.0" } -} +} \ No newline at end of file diff --git a/packages/rescript-testing-library/bsconfig.json b/packages/rescript-testing-library/rescript.json similarity index 100% rename from packages/rescript-testing-library/bsconfig.json rename to packages/rescript-testing-library/rescript.json diff --git a/packages/rescript-use-debounce/bsconfig.json b/packages/rescript-use-debounce/rescript.json similarity index 100% rename from packages/rescript-use-debounce/bsconfig.json rename to packages/rescript-use-debounce/rescript.json diff --git a/yarn.lock b/yarn.lock index 0c240f0..42ab4a0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1277,10 +1277,10 @@ node-addon-api "^3.2.1" node-gyp-build "^4.3.0" -"@rescript/react@^0.10.3": - version "0.10.3" - resolved "https://registry.yarnpkg.com/@rescript/react/-/react-0.10.3.tgz#a2a8bed6b017940ec26c2154764b350f50348889" - integrity sha512-Lf9rzrR3bQPKJjOK3PBRa/B3xrJ7CqQ1HYr9VHPVxJidarIJJFZBhj0Dg1uZURX+Wg/xiP0PHFxXmdj2bK8Vxw== +"@rescript/react@^0.12.0-alpha.3": + version "0.12.0-alpha.3" + resolved "https://registry.yarnpkg.com/@rescript/react/-/react-0.12.0-alpha.3.tgz#45b94e5b1f24776e74c2dfb7da38ed2c02a4651d" + integrity sha512-/S1uj77RPDzuLg3Ofb8KKU3Vppqy97/vF6bBdBZ+saIO9bpHVlsmmJyJG8QXjGZKE+aMynrrR3Tj4+9+5OzLdw== "@sinclair/typebox@^0.24.1": version "0.24.42" @@ -4715,12 +4715,12 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -rescript-webapi@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/rescript-webapi/-/rescript-webapi-0.6.1.tgz#b7e578c743b08e09f259938a6e9300c238020591" - integrity sha512-I/eeHOcsUfWbCf6u15zd+rKxMz9awSjjdRa8eFtl2X+HjDNs0mJxoC4uFFK9dIazYcmY2VpuK5TTpOPXvdkhDw== +rescript-webapi@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/rescript-webapi/-/rescript-webapi-0.9.0.tgz#6445380bff048a873c3350a95a4434ef0bfb61cf" + integrity sha512-Q6I0OqaboCT2Z9VMXYM6pjzYKJani8NEiD6e9TFzRqb2nPjO2I0p4FG/8ZkYRr2JZlgTF/VsMQGuQ7+buHAbDg== -rescript@11.0.0-rc8: +rescript@^11.0.0-rc.8: version "11.0.0-rc.8" resolved "https://registry.yarnpkg.com/rescript/-/rescript-11.0.0-rc.8.tgz#60c94034731cb894e09feacf10f1adb20efc7fb1" integrity sha512-KFeCeJ2tYtmSLD24o0WtWr7YLO22DflCWL31/L9Q8HGdHTLEhDNa+R0tnoyZ8B6wwm6bpNG8xosu1H4O+o7LGA==