@seed-design/codemod 0.0.0-alpha-20241018093322

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # codemod
package/bin/index.mjs ADDED
@@ -0,0 +1,7 @@
1
+ import{cac as s}from"cac";import{execaNode as a}from"execa";import{createRequire as c}from"module";var o=s(),g=n=>`./dist/${n}.mjs`;m(o);o.help();o.parse();function m(n){let t=c(import.meta.url).resolve("jscodeshift/bin/jscodeshift");n.command("migrate-icons [...paths]","Migrate icons").option("--extensions <extensions>","Extensions").option("--ignore-config <ignoreConfig>","Ignore config").option("--ignore-pattern <ignorePattern>","Ignore pattern").action(async(i,e)=>{let{all:r}=await a({all:!0})`${t} ${i.join(" ")}
2
+ -t ${g("migrate-icons")}
3
+ --parser=tsx
4
+ --verbose=2
5
+ ${e?.extensions?`--extensions=${e.extensions}`:""}
6
+ ${e?.ignoreConfig?`--ignore-config=${e.ignoreConfig}`:""}
7
+ ${e?.ignorePattern?`--ignore-pattern=${e.ignorePattern}`:""}`;console.log(r)})}
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@seed-design/codemod",
3
+ "version": "0.0.0-alpha-20241018093322",
4
+ "type": "module",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/daangn/sprout",
8
+ "directory": "packages/codemod"
9
+ },
10
+ "license": "MIT",
11
+ "bin": {
12
+ "codemod": "./bin/index.mjs"
13
+ },
14
+ "files": [
15
+ "bin",
16
+ "src"
17
+ ],
18
+ "scripts": {
19
+ "build": "node ./build.mjs",
20
+ "test": "yarn vitest"
21
+ },
22
+ "dependencies": {
23
+ "cac": "^6.7.14",
24
+ "execa": "^9.4.1",
25
+ "jscodeshift": "^17.0.0",
26
+ "winston": "^3.15.0"
27
+ },
28
+ "devDependencies": {
29
+ "@types/jscodeshift": "^0.12.0",
30
+ "@types/node": "^22.7.5",
31
+ "csv-parse": "^5.5.6",
32
+ "esbuild": "^0.24.0",
33
+ "typescript": "^5.4.5",
34
+ "vitest": "^2.0.5"
35
+ },
36
+ "publishConfig": {
37
+ "access": "public"
38
+ }
39
+ }
package/src/index.ts ADDED
@@ -0,0 +1,34 @@
1
+ import { cac, type CAC } from "cac";
2
+ import { execaNode } from "execa";
3
+ import { createRequire } from "module";
4
+
5
+ const cli = cac();
6
+ const getTransformPath = (transformFileName: string) => `./dist/${transformFileName}.mjs`;
7
+
8
+ migrateIconsCommand(cli);
9
+ cli.help();
10
+ cli.parse();
11
+
12
+ function migrateIconsCommand(cli: CAC) {
13
+ const require = createRequire(import.meta.url);
14
+ const jscodeshiftPath = require.resolve("jscodeshift/bin/jscodeshift");
15
+
16
+ cli
17
+ .command("migrate-icons [...paths]", "Migrate icons")
18
+ // https://jscodeshift.com/run/cli
19
+ .option("--extensions <extensions>", "Extensions")
20
+ .option("--ignore-config <ignoreConfig>", "Ignore config")
21
+ .option("--ignore-pattern <ignorePattern>", "Ignore pattern")
22
+ .action(async (paths, options) => {
23
+ // TODO: bun / deno?
24
+ const { all } = await execaNode({ all: true })`${jscodeshiftPath} ${paths.join(" ")}
25
+ -t ${getTransformPath("migrate-icons")}
26
+ --parser=tsx
27
+ --verbose=2
28
+ ${options?.extensions ? `--extensions=${options.extensions}` : ""}
29
+ ${options?.ignoreConfig ? `--ignore-config=${options.ignoreConfig}` : ""}
30
+ ${options?.ignorePattern ? `--ignore-pattern=${options.ignorePattern}` : ""}`;
31
+
32
+ console.log(all);
33
+ });
34
+ }
@@ -0,0 +1,41 @@
1
+ import { parse } from "csv-parse";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import { fileURLToPath } from "url";
5
+ // import * as icons from "@seed-design/react-icon";
6
+
7
+ const filePath = path.join(path.dirname(fileURLToPath(import.meta.url)), "data.tsv");
8
+ const data = fs.readFileSync(filePath, "utf8");
9
+ // const availableIcons = Object.keys(icons);
10
+
11
+ parse(data, { delimiter: "\t" }, (_err, records) => {
12
+ const newEntries = [];
13
+
14
+ for (const [key, value] of records) {
15
+ if (value === "") continue;
16
+
17
+ const pascalKey = convertSnakeCaseToPascalCase(key);
18
+ const pascalValue = convertSnakeCaseToPascalCase(value);
19
+
20
+ // if (!availableIcons.includes(pascalValue)) {
21
+ // throw new Error(`Icon not found: ${pascalValue}`);
22
+ // }
23
+
24
+ newEntries.push([`${pascalKey}Thin`, `${pascalValue}Line`]);
25
+ newEntries.push([`${pascalKey}Regular`, `${pascalValue}Line`]);
26
+ newEntries.push([`${pascalKey}Fill`, `${pascalValue}Fill`]);
27
+ }
28
+
29
+ const identifierMap = Object.fromEntries(newEntries);
30
+
31
+ fs.writeFileSync(
32
+ path.join(path.dirname(filePath), "identifier-map.json.log"),
33
+ JSON.stringify(identifierMap, null, 2),
34
+ );
35
+ });
36
+
37
+ function convertSnakeCaseToPascalCase(str) {
38
+ const newStr = str.replaceAll(/_(.)/g, (_, char) => char.toUpperCase());
39
+
40
+ return newStr.charAt(0).toUpperCase() + newStr.slice(1);
41
+ }
@@ -0,0 +1,198 @@
1
+ icon_add icon_plus
2
+ icon_add_circle icon_plus_circle
3
+ icon_aeb icon_car_front_upside_wave2_reversed_up
4
+ icon_ai icon_sparkle2
5
+ icon_android_share icon_androidshare
6
+ icon_arrow icon_arrow_up_right
7
+ icon_arrow_downward icon_arrow_down
8
+ icon_arrow_drop_down icon_triangle_down_small
9
+ icon_arrow_drop_up icon_triangle_up_small
10
+ icon_arrow_upward icon_arrow_up
11
+ icon_article icon_article
12
+ icon_backward icon_arrow_left
13
+ icon_bill icon_receipt
14
+ icon_bold
15
+ icon_bookmark icon_bookmark
16
+ icon_bookmark_list icon_horizline3_vertical_star
17
+ icon_calendar icon_calendar
18
+ icon_call icon_phone
19
+ icon_call_declined icon_phone_xmark
20
+ icon_camera icon_camera
21
+ icon_car icon_car_frontside
22
+ icon_car_around_view icon_arrow_clockwise_oval
23
+ icon_car_blind_spot icon_car_rear_upside_wave2_reversed_down_left
24
+ icon_car_cruise_control icon_speedometer
25
+ icon_car_epb icon_epb
26
+ icon_car_heated_seat icon_seat_left_heatwave2
27
+ icon_car_heated_steering_wheel icon_steeringwheel_heatwave2
28
+ icon_car_ldws icon_roadlane
29
+ icon_car_leather_seat icon_seat_left
30
+ icon_car_navigation icon_compass
31
+ icon_car_power_trunk icon_car_rear_trunk_open_leftside
32
+ icon_car_rear_camera icon_car_rear_upside_sector_down
33
+ icon_car_rear_sensor icon_car_rear_upside_wave2_reversed_down
34
+ icon_car_smart_key icon_smartkey
35
+ icon_car_ventilation_seat icon_seat_left_fan
36
+ icon_cart icon_cart
37
+ icon_certification icon_crosshair
38
+ icon_challenge icon_flag_hill
39
+ icon_chart icon_barchart_square
40
+ icon_chat_bubble_check icon_checkmark_chatbubble_left
41
+ icon_chatting icon_dot3_horizontal_chatbubble_left
42
+ icon_chatting_send icon_paperplane
43
+ icon_check icon_checkmark
44
+ icon_check_flower icon_checkmark_flower
45
+ icon_chevron_left icon_chevron_left
46
+ icon_chevron_right icon_chevron_right
47
+ icon_click icon_hand_point_up
48
+ icon_clock icon_clock
49
+ icon_close icon_xmark
50
+ icon_cobuying
51
+ icon_community icon_post
52
+ icon_condo icon_building2
53
+ icon_confirmation icon_check_shield
54
+ icon_confirmation_pay icon_won_shield
55
+ icon_confirmation_profile icon_person_shield
56
+ icon_contents icon_grid_heart
57
+ icon_convert icon_arrow_right_arrow_left
58
+ icon_copy icon_square2_stacked
59
+ icon_coupon icon_coupon
60
+ icon_coupon_download_done icon_checkmark_horizline
61
+ icon_coupon_used icon_check_coupon
62
+ icon_delete_keyboard icon_backspacekey
63
+ icon_delivery
64
+ icon_direction icon_arrow_right_angled
65
+ icon_download icon_arrow_down_horizline
66
+ icon_edit icon_eraser_horizline
67
+ icon_emoticon icon_face_smile_circle
68
+ icon_emoticon_bad icon_face_sad_circle
69
+ icon_expand icon_arrow_up_right_arrow_down_left
70
+ icon_expand_less icon_chevron_up
71
+ icon_expand_more icon_chevron_down
72
+ icon_file icon_paperclip
73
+ icon_filter02 icon_slider2_horizontal
74
+ icon_forward icon_arrow_right
75
+ icon_gender icon_malesymbol_femalesymbol
76
+ icon_global icon_globe
77
+ icon_gps icon_crosshair
78
+ icon_gps_enable icon_crosshair_questionmark
79
+ icon_gps_enable2 icon_crosshair_questionmark
80
+ icon_groupchat_king icon_crown
81
+ icon_handle icon_horizline3_vertical_tight
82
+ icon_hashtag icon_hash
83
+ icon_headphone icon_headset
84
+ icon_heart icon_heart
85
+ icon_help icon_questionmark_circle
86
+ icon_helpcenter icon_headset
87
+ icon_helper icon_headset
88
+ icon_home icon_house
89
+ icon_house icon_window4_house
90
+ icon_housekeeping_book icon_book
91
+ icon_import icon_document_arrow_left
92
+ icon_info icon_i_lowercase_serif_circle
93
+ icon_interest icon_horizline3_vertical_star
94
+ icon_interest_list icon_star
95
+ icon_invite icon_envelope
96
+ icon_invite_friend icon_person_plus
97
+ icon_ios_share icon_arrow_up_bracket_down
98
+ icon_jobs icon_person_magnifyingglass
99
+ icon_keyboard_hiding icon_keyboard_chevron_down
100
+ icon_keyword icon_tag
101
+ icon_laptop icon_laptop
102
+ icon_leaf icon_leaf
103
+ icon_list icon_dothorizline3_vertical
104
+ icon_list_card icon_horizrectangle_horizline2_vertical
105
+ icon_list_check icon_document_checkmark
106
+ icon_list_select icon_horizline3_vertical_checkmark
107
+ icon_list_thumbnail icon_squareline2_vertical
108
+ icon_location icon_locationpin
109
+ icon_lock icon_lock
110
+ icon_loudspeaker icon_megaphone
111
+ icon_map icon_map_locationpin
112
+ icon_market icon_store
113
+ icon_market_check icon_store_check
114
+ icon_market_write icon_store_pen
115
+ icon_mention icon_at
116
+ icon_menu icon_horizline3_vertical
117
+ icon_mic icon_microphone
118
+ icon_mic_off icon_microphone_slash
119
+ icon_mission icon_book_open
120
+ icon_mobile icon_mobile
121
+ icon_money_send icon_won_circle_arrow_right
122
+ icon_money_won icon_won_circle
123
+ icon_moon icon_moon
124
+ icon_more_horiz icon_dot3_horizontal
125
+ icon_more_vert icon_dot3_vertical
126
+ icon_my icon_person
127
+ icon_my_profile icon_person_circle
128
+ icon_near_me icon_locationpin
129
+ icon_newtopic icon_n_uppercase_circle
130
+ icon_note icon_document
131
+ icon_notification icon_bell
132
+ icon_notification_fall icon_arrow_down
133
+ icon_notification_off icon_bell_slash
134
+ icon_order icon_check_clipboard
135
+ icon_pause icon_vertrectangle2_horizontal
136
+ icon_payment icon_card
137
+ icon_percent icon_percent
138
+ icon_photo icon_picture
139
+ icon_photo_edit icon_wand
140
+ icon_photo_edit_crop icon_cropmark
141
+ icon_photo_edit_draw icon_scribble
142
+ icon_photo_edit_rotate icon_arrow2_clockwise_circular
143
+ icon_photo_several icon_picture2_stacked
144
+ icon_play icon_triangle_right
145
+ icon_poll icon_barchart_square
146
+ icon_price_won icon_won
147
+ icon_product icon_shoppingbag
148
+ icon_profile icon_person
149
+ icon_profile_badge icon_checkmark_badge
150
+ icon_prohibition icon_slash_circle
151
+ icon_pushpin icon_pushpin
152
+ icon_question_check icon_questionmark_sqaure
153
+ icon_redo icon_arrow_uturn_right
154
+ icon_refund icon_won_arrow_clockwise_circular
155
+ icon_remove_circle icon_xmark_circle
156
+ icon_reply icon_horizline2_vertical_chatbubble_right
157
+ icon_reply_mission
158
+ icon_reply_re icon_corner_down_left
159
+ icon_report icon_flag
160
+ icon_reservation icon_check_calendar
161
+ icon_restaurant icon_fork_spoon
162
+ icon_retry icon_arrow_clockwise_circular
163
+ icon_review_star icon_star
164
+ icon_scanner icon_horizeline_viewfinder
165
+ icon_search icon_magnifyingglass
166
+ icon_search_doc icon_document_magnifyingglass
167
+ icon_sell icon_plus_square
168
+ icon_setting icon_gear
169
+ icon_signout icon_bracket_left_arrow_right
170
+ icon_sort icon_arrow_up_arrow_down
171
+ icon_story icon_triangle_right_chatbubble_left
172
+ icon_story_article icon_document_pen
173
+ icon_subtract_circle icon_minus_circle
174
+ icon_subtraction icon_minus
175
+ icon_suggest
176
+ icon_sun icon_sun
177
+ icon_talkingdown icon_quotationmark2_right
178
+ icon_talkingup icon_quotationmark2_left
179
+ icon_text icon_t_uppercase_serif
180
+ icon_thumb_down icon_thumb_down
181
+ icon_thumb_up icon_thumb_up
182
+ icon_toolbox icon_toolbox
183
+ icon_translate icon_translation
184
+ icon_trash icon_trashcan
185
+ icon_undo icon_arrow_uturn_left
186
+ icon_user_group icon_person2
187
+ icon_video icon_camcorder
188
+ icon_view_count icon_eye
189
+ icon_view_count_off icon_eye_slash
190
+ icon_volume_off icon_speaker_slash
191
+ icon_volume_on icon_speaker_wave2
192
+ icon_vote icon_check_ballotbox
193
+ icon_voucher icon_gift
194
+ icon_walk icon_figure_walk
195
+ icon_warning icon_exclamationmark_circle
196
+ icon_write icon_pen_horizline
197
+ icon_write_frequent_use icon_document_plus
198
+ icon_write_story