jell-utils 0.1.0 → 0.2.0
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/.claude/commands/tm/add-dependency.md +58 -0
- package/.claude/commands/tm/add-subtask.md +79 -0
- package/.claude/commands/tm/add-task.md +81 -0
- package/.claude/commands/tm/analyze-complexity.md +124 -0
- package/.claude/commands/tm/analyze-project.md +100 -0
- package/.claude/commands/tm/auto-implement-tasks.md +100 -0
- package/.claude/commands/tm/command-pipeline.md +80 -0
- package/.claude/commands/tm/complexity-report.md +120 -0
- package/.claude/commands/tm/convert-task-to-subtask.md +74 -0
- package/.claude/commands/tm/expand-all-tasks.md +52 -0
- package/.claude/commands/tm/expand-task.md +52 -0
- package/.claude/commands/tm/fix-dependencies.md +82 -0
- package/.claude/commands/tm/help.md +101 -0
- package/.claude/commands/tm/init-project-quick.md +49 -0
- package/.claude/commands/tm/init-project.md +53 -0
- package/.claude/commands/tm/install-taskmaster.md +118 -0
- package/.claude/commands/tm/learn.md +106 -0
- package/.claude/commands/tm/list-tasks-by-status.md +42 -0
- package/.claude/commands/tm/list-tasks-with-subtasks.md +30 -0
- package/.claude/commands/tm/list-tasks.md +46 -0
- package/.claude/commands/tm/next-task.md +69 -0
- package/.claude/commands/tm/parse-prd-with-research.md +51 -0
- package/.claude/commands/tm/parse-prd.md +52 -0
- package/.claude/commands/tm/project-status.md +67 -0
- package/.claude/commands/tm/quick-install-taskmaster.md +23 -0
- package/.claude/commands/tm/remove-all-subtasks.md +94 -0
- package/.claude/commands/tm/remove-dependency.md +65 -0
- package/.claude/commands/tm/remove-subtask.md +87 -0
- package/.claude/commands/tm/remove-subtasks.md +89 -0
- package/.claude/commands/tm/remove-task.md +110 -0
- package/.claude/commands/tm/setup-models.md +52 -0
- package/.claude/commands/tm/show-task.md +85 -0
- package/.claude/commands/tm/smart-workflow.md +58 -0
- package/.claude/commands/tm/sync-readme.md +120 -0
- package/.claude/commands/tm/tm-main.md +147 -0
- package/.claude/commands/tm/to-cancelled.md +58 -0
- package/.claude/commands/tm/to-deferred.md +50 -0
- package/.claude/commands/tm/to-done.md +47 -0
- package/.claude/commands/tm/to-in-progress.md +39 -0
- package/.claude/commands/tm/to-pending.md +35 -0
- package/.claude/commands/tm/to-review.md +43 -0
- package/.claude/commands/tm/update-single-task.md +122 -0
- package/.claude/commands/tm/update-task.md +75 -0
- package/.claude/commands/tm/update-tasks-from-id.md +111 -0
- package/.claude/commands/tm/validate-dependencies.md +72 -0
- package/.claude/commands/tm/view-models.md +52 -0
- package/.claude/settings.local.json +17 -3
- package/.cursor/commands/tm/add-dependency.md +55 -0
- package/.cursor/commands/tm/add-subtask.md +76 -0
- package/.cursor/commands/tm/add-task.md +78 -0
- package/.cursor/commands/tm/analyze-complexity.md +121 -0
- package/.cursor/commands/tm/analyze-project.md +97 -0
- package/.cursor/commands/tm/auto-implement-tasks.md +97 -0
- package/.cursor/commands/tm/command-pipeline.md +77 -0
- package/.cursor/commands/tm/complexity-report.md +117 -0
- package/.cursor/commands/tm/convert-task-to-subtask.md +71 -0
- package/.cursor/commands/tm/expand-all-tasks.md +51 -0
- package/.cursor/commands/tm/expand-task.md +49 -0
- package/.cursor/commands/tm/fix-dependencies.md +81 -0
- package/.cursor/commands/tm/help.md +98 -0
- package/.cursor/commands/tm/init-project-quick.md +46 -0
- package/.cursor/commands/tm/init-project.md +50 -0
- package/.cursor/commands/tm/install-taskmaster.md +117 -0
- package/.cursor/commands/tm/learn.md +103 -0
- package/.cursor/commands/tm/list-tasks-by-status.md +39 -0
- package/.cursor/commands/tm/list-tasks-with-subtasks.md +29 -0
- package/.cursor/commands/tm/list-tasks.md +43 -0
- package/.cursor/commands/tm/next-task.md +66 -0
- package/.cursor/commands/tm/parse-prd-with-research.md +48 -0
- package/.cursor/commands/tm/parse-prd.md +49 -0
- package/.cursor/commands/tm/project-status.md +64 -0
- package/.cursor/commands/tm/quick-install-taskmaster.md +22 -0
- package/.cursor/commands/tm/remove-all-subtasks.md +93 -0
- package/.cursor/commands/tm/remove-dependency.md +62 -0
- package/.cursor/commands/tm/remove-subtask.md +84 -0
- package/.cursor/commands/tm/remove-subtasks.md +86 -0
- package/.cursor/commands/tm/remove-task.md +107 -0
- package/.cursor/commands/tm/setup-models.md +51 -0
- package/.cursor/commands/tm/show-task.md +82 -0
- package/.cursor/commands/tm/smart-workflow.md +55 -0
- package/.cursor/commands/tm/sync-readme.md +117 -0
- package/.cursor/commands/tm/tm-main.md +146 -0
- package/.cursor/commands/tm/to-cancelled.md +55 -0
- package/.cursor/commands/tm/to-deferred.md +47 -0
- package/.cursor/commands/tm/to-done.md +44 -0
- package/.cursor/commands/tm/to-in-progress.md +36 -0
- package/.cursor/commands/tm/to-pending.md +32 -0
- package/.cursor/commands/tm/to-review.md +40 -0
- package/.cursor/commands/tm/update-single-task.md +119 -0
- package/.cursor/commands/tm/update-task.md +72 -0
- package/.cursor/commands/tm/update-tasks-from-id.md +108 -0
- package/.cursor/commands/tm/validate-dependencies.md +71 -0
- package/.cursor/commands/tm/view-models.md +51 -0
- package/.cursor/mcp.json +20 -0
- package/.cursor/rules/cursor_rules.mdc +53 -0
- package/.cursor/rules/self_improve.mdc +72 -0
- package/.cursor/rules/taskmaster/dev_workflow.mdc +424 -0
- package/.cursor/rules/taskmaster/taskmaster.mdc +573 -0
- package/.env.example +12 -0
- package/.gemini/commands/tm/add-dependency.toml +58 -0
- package/.gemini/commands/tm/add-subtask.toml +79 -0
- package/.gemini/commands/tm/add-task.toml +81 -0
- package/.gemini/commands/tm/analyze-complexity.toml +124 -0
- package/.gemini/commands/tm/analyze-project.toml +100 -0
- package/.gemini/commands/tm/auto-implement-tasks.toml +100 -0
- package/.gemini/commands/tm/command-pipeline.toml +80 -0
- package/.gemini/commands/tm/complexity-report.toml +120 -0
- package/.gemini/commands/tm/convert-task-to-subtask.toml +74 -0
- package/.gemini/commands/tm/expand-all-tasks.toml +54 -0
- package/.gemini/commands/tm/expand-task.toml +52 -0
- package/.gemini/commands/tm/fix-dependencies.toml +84 -0
- package/.gemini/commands/tm/help.toml +101 -0
- package/.gemini/commands/tm/init-project-quick.toml +49 -0
- package/.gemini/commands/tm/init-project.toml +53 -0
- package/.gemini/commands/tm/install-taskmaster.toml +120 -0
- package/.gemini/commands/tm/learn.toml +106 -0
- package/.gemini/commands/tm/list-tasks-by-status.toml +42 -0
- package/.gemini/commands/tm/list-tasks-with-subtasks.toml +32 -0
- package/.gemini/commands/tm/list-tasks.toml +46 -0
- package/.gemini/commands/tm/next-task.toml +69 -0
- package/.gemini/commands/tm/parse-prd-with-research.toml +51 -0
- package/.gemini/commands/tm/parse-prd.toml +52 -0
- package/.gemini/commands/tm/project-status.toml +67 -0
- package/.gemini/commands/tm/quick-install-taskmaster.toml +25 -0
- package/.gemini/commands/tm/remove-all-subtasks.toml +96 -0
- package/.gemini/commands/tm/remove-dependency.toml +65 -0
- package/.gemini/commands/tm/remove-subtask.toml +87 -0
- package/.gemini/commands/tm/remove-subtasks.toml +89 -0
- package/.gemini/commands/tm/remove-task.toml +110 -0
- package/.gemini/commands/tm/setup-models.toml +54 -0
- package/.gemini/commands/tm/show-task.toml +85 -0
- package/.gemini/commands/tm/smart-workflow.toml +58 -0
- package/.gemini/commands/tm/sync-readme.toml +120 -0
- package/.gemini/commands/tm/tm-main.toml +149 -0
- package/.gemini/commands/tm/to-cancelled.toml +58 -0
- package/.gemini/commands/tm/to-deferred.toml +50 -0
- package/.gemini/commands/tm/to-done.toml +47 -0
- package/.gemini/commands/tm/to-in-progress.toml +39 -0
- package/.gemini/commands/tm/to-pending.toml +35 -0
- package/.gemini/commands/tm/to-review.toml +43 -0
- package/.gemini/commands/tm/update-single-task.toml +122 -0
- package/.gemini/commands/tm/update-task.toml +75 -0
- package/.gemini/commands/tm/update-tasks-from-id.toml +111 -0
- package/.gemini/commands/tm/validate-dependencies.toml +74 -0
- package/.gemini/commands/tm/view-models.toml +54 -0
- package/.gemini/settings.json +20 -0
- package/.mcp.json +15 -0
- package/.taskmaster/CLAUDE.md +435 -0
- package/.taskmaster/config.json +44 -0
- package/.taskmaster/docs/prd.txt +584 -0
- package/.taskmaster/state.json +6 -0
- package/.taskmaster/tasks/tasks.json +304 -0
- package/.taskmaster/templates/example_prd.txt +47 -0
- package/.taskmaster/templates/example_prd_rpg.txt +511 -0
- package/CLAUDE.md +4 -138
- package/README.md +551 -0
- package/coverage/clover.xml +134 -22
- package/coverage/coverage-final.json +1 -1
- package/coverage/lcov-report/index.html +21 -21
- package/coverage/lcov-report/index.js.html +854 -29
- package/coverage/lcov.info +246 -39
- package/internal-docs/CLAUDE.md +139 -0
- package/internal-docs/NPM_DEPLOYMENT_GUIDE.md +203 -0
- package/internal-docs/OBSIDIAN_PROJECT_PROMPT.md +302 -0
- package/lib/index.d.ts +88 -0
- package/lib/index.js +275 -0
- package/package.json +11 -3
- /package/{DEPLOYMENT.md → internal-docs/DEPLOYMENT.md} +0 -0
- /package/{TEST_RESULTS.md → internal-docs/TEST_RESULTS.md} +0 -0
- /package/{TEST_SIMULATION.md → internal-docs/TEST_SIMULATION.md} +0 -0
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">83.16% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>400/481</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">75.6% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>248/328</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">91.02% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>71/78</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">85.85% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>346/403</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
|
-
<div class='status-line
|
|
64
|
+
<div class='status-line high'></div>
|
|
65
65
|
<pre><table class="coverage">
|
|
66
66
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
67
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -721,8 +721,283 @@
|
|
|
721
721
|
<a name='L656'></a><a href='#L656'>656</a>
|
|
722
722
|
<a name='L657'></a><a href='#L657'>657</a>
|
|
723
723
|
<a name='L658'></a><a href='#L658'>658</a>
|
|
724
|
-
<a name='L659'></a><a href='#L659'>659</a
|
|
725
|
-
<
|
|
724
|
+
<a name='L659'></a><a href='#L659'>659</a>
|
|
725
|
+
<a name='L660'></a><a href='#L660'>660</a>
|
|
726
|
+
<a name='L661'></a><a href='#L661'>661</a>
|
|
727
|
+
<a name='L662'></a><a href='#L662'>662</a>
|
|
728
|
+
<a name='L663'></a><a href='#L663'>663</a>
|
|
729
|
+
<a name='L664'></a><a href='#L664'>664</a>
|
|
730
|
+
<a name='L665'></a><a href='#L665'>665</a>
|
|
731
|
+
<a name='L666'></a><a href='#L666'>666</a>
|
|
732
|
+
<a name='L667'></a><a href='#L667'>667</a>
|
|
733
|
+
<a name='L668'></a><a href='#L668'>668</a>
|
|
734
|
+
<a name='L669'></a><a href='#L669'>669</a>
|
|
735
|
+
<a name='L670'></a><a href='#L670'>670</a>
|
|
736
|
+
<a name='L671'></a><a href='#L671'>671</a>
|
|
737
|
+
<a name='L672'></a><a href='#L672'>672</a>
|
|
738
|
+
<a name='L673'></a><a href='#L673'>673</a>
|
|
739
|
+
<a name='L674'></a><a href='#L674'>674</a>
|
|
740
|
+
<a name='L675'></a><a href='#L675'>675</a>
|
|
741
|
+
<a name='L676'></a><a href='#L676'>676</a>
|
|
742
|
+
<a name='L677'></a><a href='#L677'>677</a>
|
|
743
|
+
<a name='L678'></a><a href='#L678'>678</a>
|
|
744
|
+
<a name='L679'></a><a href='#L679'>679</a>
|
|
745
|
+
<a name='L680'></a><a href='#L680'>680</a>
|
|
746
|
+
<a name='L681'></a><a href='#L681'>681</a>
|
|
747
|
+
<a name='L682'></a><a href='#L682'>682</a>
|
|
748
|
+
<a name='L683'></a><a href='#L683'>683</a>
|
|
749
|
+
<a name='L684'></a><a href='#L684'>684</a>
|
|
750
|
+
<a name='L685'></a><a href='#L685'>685</a>
|
|
751
|
+
<a name='L686'></a><a href='#L686'>686</a>
|
|
752
|
+
<a name='L687'></a><a href='#L687'>687</a>
|
|
753
|
+
<a name='L688'></a><a href='#L688'>688</a>
|
|
754
|
+
<a name='L689'></a><a href='#L689'>689</a>
|
|
755
|
+
<a name='L690'></a><a href='#L690'>690</a>
|
|
756
|
+
<a name='L691'></a><a href='#L691'>691</a>
|
|
757
|
+
<a name='L692'></a><a href='#L692'>692</a>
|
|
758
|
+
<a name='L693'></a><a href='#L693'>693</a>
|
|
759
|
+
<a name='L694'></a><a href='#L694'>694</a>
|
|
760
|
+
<a name='L695'></a><a href='#L695'>695</a>
|
|
761
|
+
<a name='L696'></a><a href='#L696'>696</a>
|
|
762
|
+
<a name='L697'></a><a href='#L697'>697</a>
|
|
763
|
+
<a name='L698'></a><a href='#L698'>698</a>
|
|
764
|
+
<a name='L699'></a><a href='#L699'>699</a>
|
|
765
|
+
<a name='L700'></a><a href='#L700'>700</a>
|
|
766
|
+
<a name='L701'></a><a href='#L701'>701</a>
|
|
767
|
+
<a name='L702'></a><a href='#L702'>702</a>
|
|
768
|
+
<a name='L703'></a><a href='#L703'>703</a>
|
|
769
|
+
<a name='L704'></a><a href='#L704'>704</a>
|
|
770
|
+
<a name='L705'></a><a href='#L705'>705</a>
|
|
771
|
+
<a name='L706'></a><a href='#L706'>706</a>
|
|
772
|
+
<a name='L707'></a><a href='#L707'>707</a>
|
|
773
|
+
<a name='L708'></a><a href='#L708'>708</a>
|
|
774
|
+
<a name='L709'></a><a href='#L709'>709</a>
|
|
775
|
+
<a name='L710'></a><a href='#L710'>710</a>
|
|
776
|
+
<a name='L711'></a><a href='#L711'>711</a>
|
|
777
|
+
<a name='L712'></a><a href='#L712'>712</a>
|
|
778
|
+
<a name='L713'></a><a href='#L713'>713</a>
|
|
779
|
+
<a name='L714'></a><a href='#L714'>714</a>
|
|
780
|
+
<a name='L715'></a><a href='#L715'>715</a>
|
|
781
|
+
<a name='L716'></a><a href='#L716'>716</a>
|
|
782
|
+
<a name='L717'></a><a href='#L717'>717</a>
|
|
783
|
+
<a name='L718'></a><a href='#L718'>718</a>
|
|
784
|
+
<a name='L719'></a><a href='#L719'>719</a>
|
|
785
|
+
<a name='L720'></a><a href='#L720'>720</a>
|
|
786
|
+
<a name='L721'></a><a href='#L721'>721</a>
|
|
787
|
+
<a name='L722'></a><a href='#L722'>722</a>
|
|
788
|
+
<a name='L723'></a><a href='#L723'>723</a>
|
|
789
|
+
<a name='L724'></a><a href='#L724'>724</a>
|
|
790
|
+
<a name='L725'></a><a href='#L725'>725</a>
|
|
791
|
+
<a name='L726'></a><a href='#L726'>726</a>
|
|
792
|
+
<a name='L727'></a><a href='#L727'>727</a>
|
|
793
|
+
<a name='L728'></a><a href='#L728'>728</a>
|
|
794
|
+
<a name='L729'></a><a href='#L729'>729</a>
|
|
795
|
+
<a name='L730'></a><a href='#L730'>730</a>
|
|
796
|
+
<a name='L731'></a><a href='#L731'>731</a>
|
|
797
|
+
<a name='L732'></a><a href='#L732'>732</a>
|
|
798
|
+
<a name='L733'></a><a href='#L733'>733</a>
|
|
799
|
+
<a name='L734'></a><a href='#L734'>734</a>
|
|
800
|
+
<a name='L735'></a><a href='#L735'>735</a>
|
|
801
|
+
<a name='L736'></a><a href='#L736'>736</a>
|
|
802
|
+
<a name='L737'></a><a href='#L737'>737</a>
|
|
803
|
+
<a name='L738'></a><a href='#L738'>738</a>
|
|
804
|
+
<a name='L739'></a><a href='#L739'>739</a>
|
|
805
|
+
<a name='L740'></a><a href='#L740'>740</a>
|
|
806
|
+
<a name='L741'></a><a href='#L741'>741</a>
|
|
807
|
+
<a name='L742'></a><a href='#L742'>742</a>
|
|
808
|
+
<a name='L743'></a><a href='#L743'>743</a>
|
|
809
|
+
<a name='L744'></a><a href='#L744'>744</a>
|
|
810
|
+
<a name='L745'></a><a href='#L745'>745</a>
|
|
811
|
+
<a name='L746'></a><a href='#L746'>746</a>
|
|
812
|
+
<a name='L747'></a><a href='#L747'>747</a>
|
|
813
|
+
<a name='L748'></a><a href='#L748'>748</a>
|
|
814
|
+
<a name='L749'></a><a href='#L749'>749</a>
|
|
815
|
+
<a name='L750'></a><a href='#L750'>750</a>
|
|
816
|
+
<a name='L751'></a><a href='#L751'>751</a>
|
|
817
|
+
<a name='L752'></a><a href='#L752'>752</a>
|
|
818
|
+
<a name='L753'></a><a href='#L753'>753</a>
|
|
819
|
+
<a name='L754'></a><a href='#L754'>754</a>
|
|
820
|
+
<a name='L755'></a><a href='#L755'>755</a>
|
|
821
|
+
<a name='L756'></a><a href='#L756'>756</a>
|
|
822
|
+
<a name='L757'></a><a href='#L757'>757</a>
|
|
823
|
+
<a name='L758'></a><a href='#L758'>758</a>
|
|
824
|
+
<a name='L759'></a><a href='#L759'>759</a>
|
|
825
|
+
<a name='L760'></a><a href='#L760'>760</a>
|
|
826
|
+
<a name='L761'></a><a href='#L761'>761</a>
|
|
827
|
+
<a name='L762'></a><a href='#L762'>762</a>
|
|
828
|
+
<a name='L763'></a><a href='#L763'>763</a>
|
|
829
|
+
<a name='L764'></a><a href='#L764'>764</a>
|
|
830
|
+
<a name='L765'></a><a href='#L765'>765</a>
|
|
831
|
+
<a name='L766'></a><a href='#L766'>766</a>
|
|
832
|
+
<a name='L767'></a><a href='#L767'>767</a>
|
|
833
|
+
<a name='L768'></a><a href='#L768'>768</a>
|
|
834
|
+
<a name='L769'></a><a href='#L769'>769</a>
|
|
835
|
+
<a name='L770'></a><a href='#L770'>770</a>
|
|
836
|
+
<a name='L771'></a><a href='#L771'>771</a>
|
|
837
|
+
<a name='L772'></a><a href='#L772'>772</a>
|
|
838
|
+
<a name='L773'></a><a href='#L773'>773</a>
|
|
839
|
+
<a name='L774'></a><a href='#L774'>774</a>
|
|
840
|
+
<a name='L775'></a><a href='#L775'>775</a>
|
|
841
|
+
<a name='L776'></a><a href='#L776'>776</a>
|
|
842
|
+
<a name='L777'></a><a href='#L777'>777</a>
|
|
843
|
+
<a name='L778'></a><a href='#L778'>778</a>
|
|
844
|
+
<a name='L779'></a><a href='#L779'>779</a>
|
|
845
|
+
<a name='L780'></a><a href='#L780'>780</a>
|
|
846
|
+
<a name='L781'></a><a href='#L781'>781</a>
|
|
847
|
+
<a name='L782'></a><a href='#L782'>782</a>
|
|
848
|
+
<a name='L783'></a><a href='#L783'>783</a>
|
|
849
|
+
<a name='L784'></a><a href='#L784'>784</a>
|
|
850
|
+
<a name='L785'></a><a href='#L785'>785</a>
|
|
851
|
+
<a name='L786'></a><a href='#L786'>786</a>
|
|
852
|
+
<a name='L787'></a><a href='#L787'>787</a>
|
|
853
|
+
<a name='L788'></a><a href='#L788'>788</a>
|
|
854
|
+
<a name='L789'></a><a href='#L789'>789</a>
|
|
855
|
+
<a name='L790'></a><a href='#L790'>790</a>
|
|
856
|
+
<a name='L791'></a><a href='#L791'>791</a>
|
|
857
|
+
<a name='L792'></a><a href='#L792'>792</a>
|
|
858
|
+
<a name='L793'></a><a href='#L793'>793</a>
|
|
859
|
+
<a name='L794'></a><a href='#L794'>794</a>
|
|
860
|
+
<a name='L795'></a><a href='#L795'>795</a>
|
|
861
|
+
<a name='L796'></a><a href='#L796'>796</a>
|
|
862
|
+
<a name='L797'></a><a href='#L797'>797</a>
|
|
863
|
+
<a name='L798'></a><a href='#L798'>798</a>
|
|
864
|
+
<a name='L799'></a><a href='#L799'>799</a>
|
|
865
|
+
<a name='L800'></a><a href='#L800'>800</a>
|
|
866
|
+
<a name='L801'></a><a href='#L801'>801</a>
|
|
867
|
+
<a name='L802'></a><a href='#L802'>802</a>
|
|
868
|
+
<a name='L803'></a><a href='#L803'>803</a>
|
|
869
|
+
<a name='L804'></a><a href='#L804'>804</a>
|
|
870
|
+
<a name='L805'></a><a href='#L805'>805</a>
|
|
871
|
+
<a name='L806'></a><a href='#L806'>806</a>
|
|
872
|
+
<a name='L807'></a><a href='#L807'>807</a>
|
|
873
|
+
<a name='L808'></a><a href='#L808'>808</a>
|
|
874
|
+
<a name='L809'></a><a href='#L809'>809</a>
|
|
875
|
+
<a name='L810'></a><a href='#L810'>810</a>
|
|
876
|
+
<a name='L811'></a><a href='#L811'>811</a>
|
|
877
|
+
<a name='L812'></a><a href='#L812'>812</a>
|
|
878
|
+
<a name='L813'></a><a href='#L813'>813</a>
|
|
879
|
+
<a name='L814'></a><a href='#L814'>814</a>
|
|
880
|
+
<a name='L815'></a><a href='#L815'>815</a>
|
|
881
|
+
<a name='L816'></a><a href='#L816'>816</a>
|
|
882
|
+
<a name='L817'></a><a href='#L817'>817</a>
|
|
883
|
+
<a name='L818'></a><a href='#L818'>818</a>
|
|
884
|
+
<a name='L819'></a><a href='#L819'>819</a>
|
|
885
|
+
<a name='L820'></a><a href='#L820'>820</a>
|
|
886
|
+
<a name='L821'></a><a href='#L821'>821</a>
|
|
887
|
+
<a name='L822'></a><a href='#L822'>822</a>
|
|
888
|
+
<a name='L823'></a><a href='#L823'>823</a>
|
|
889
|
+
<a name='L824'></a><a href='#L824'>824</a>
|
|
890
|
+
<a name='L825'></a><a href='#L825'>825</a>
|
|
891
|
+
<a name='L826'></a><a href='#L826'>826</a>
|
|
892
|
+
<a name='L827'></a><a href='#L827'>827</a>
|
|
893
|
+
<a name='L828'></a><a href='#L828'>828</a>
|
|
894
|
+
<a name='L829'></a><a href='#L829'>829</a>
|
|
895
|
+
<a name='L830'></a><a href='#L830'>830</a>
|
|
896
|
+
<a name='L831'></a><a href='#L831'>831</a>
|
|
897
|
+
<a name='L832'></a><a href='#L832'>832</a>
|
|
898
|
+
<a name='L833'></a><a href='#L833'>833</a>
|
|
899
|
+
<a name='L834'></a><a href='#L834'>834</a>
|
|
900
|
+
<a name='L835'></a><a href='#L835'>835</a>
|
|
901
|
+
<a name='L836'></a><a href='#L836'>836</a>
|
|
902
|
+
<a name='L837'></a><a href='#L837'>837</a>
|
|
903
|
+
<a name='L838'></a><a href='#L838'>838</a>
|
|
904
|
+
<a name='L839'></a><a href='#L839'>839</a>
|
|
905
|
+
<a name='L840'></a><a href='#L840'>840</a>
|
|
906
|
+
<a name='L841'></a><a href='#L841'>841</a>
|
|
907
|
+
<a name='L842'></a><a href='#L842'>842</a>
|
|
908
|
+
<a name='L843'></a><a href='#L843'>843</a>
|
|
909
|
+
<a name='L844'></a><a href='#L844'>844</a>
|
|
910
|
+
<a name='L845'></a><a href='#L845'>845</a>
|
|
911
|
+
<a name='L846'></a><a href='#L846'>846</a>
|
|
912
|
+
<a name='L847'></a><a href='#L847'>847</a>
|
|
913
|
+
<a name='L848'></a><a href='#L848'>848</a>
|
|
914
|
+
<a name='L849'></a><a href='#L849'>849</a>
|
|
915
|
+
<a name='L850'></a><a href='#L850'>850</a>
|
|
916
|
+
<a name='L851'></a><a href='#L851'>851</a>
|
|
917
|
+
<a name='L852'></a><a href='#L852'>852</a>
|
|
918
|
+
<a name='L853'></a><a href='#L853'>853</a>
|
|
919
|
+
<a name='L854'></a><a href='#L854'>854</a>
|
|
920
|
+
<a name='L855'></a><a href='#L855'>855</a>
|
|
921
|
+
<a name='L856'></a><a href='#L856'>856</a>
|
|
922
|
+
<a name='L857'></a><a href='#L857'>857</a>
|
|
923
|
+
<a name='L858'></a><a href='#L858'>858</a>
|
|
924
|
+
<a name='L859'></a><a href='#L859'>859</a>
|
|
925
|
+
<a name='L860'></a><a href='#L860'>860</a>
|
|
926
|
+
<a name='L861'></a><a href='#L861'>861</a>
|
|
927
|
+
<a name='L862'></a><a href='#L862'>862</a>
|
|
928
|
+
<a name='L863'></a><a href='#L863'>863</a>
|
|
929
|
+
<a name='L864'></a><a href='#L864'>864</a>
|
|
930
|
+
<a name='L865'></a><a href='#L865'>865</a>
|
|
931
|
+
<a name='L866'></a><a href='#L866'>866</a>
|
|
932
|
+
<a name='L867'></a><a href='#L867'>867</a>
|
|
933
|
+
<a name='L868'></a><a href='#L868'>868</a>
|
|
934
|
+
<a name='L869'></a><a href='#L869'>869</a>
|
|
935
|
+
<a name='L870'></a><a href='#L870'>870</a>
|
|
936
|
+
<a name='L871'></a><a href='#L871'>871</a>
|
|
937
|
+
<a name='L872'></a><a href='#L872'>872</a>
|
|
938
|
+
<a name='L873'></a><a href='#L873'>873</a>
|
|
939
|
+
<a name='L874'></a><a href='#L874'>874</a>
|
|
940
|
+
<a name='L875'></a><a href='#L875'>875</a>
|
|
941
|
+
<a name='L876'></a><a href='#L876'>876</a>
|
|
942
|
+
<a name='L877'></a><a href='#L877'>877</a>
|
|
943
|
+
<a name='L878'></a><a href='#L878'>878</a>
|
|
944
|
+
<a name='L879'></a><a href='#L879'>879</a>
|
|
945
|
+
<a name='L880'></a><a href='#L880'>880</a>
|
|
946
|
+
<a name='L881'></a><a href='#L881'>881</a>
|
|
947
|
+
<a name='L882'></a><a href='#L882'>882</a>
|
|
948
|
+
<a name='L883'></a><a href='#L883'>883</a>
|
|
949
|
+
<a name='L884'></a><a href='#L884'>884</a>
|
|
950
|
+
<a name='L885'></a><a href='#L885'>885</a>
|
|
951
|
+
<a name='L886'></a><a href='#L886'>886</a>
|
|
952
|
+
<a name='L887'></a><a href='#L887'>887</a>
|
|
953
|
+
<a name='L888'></a><a href='#L888'>888</a>
|
|
954
|
+
<a name='L889'></a><a href='#L889'>889</a>
|
|
955
|
+
<a name='L890'></a><a href='#L890'>890</a>
|
|
956
|
+
<a name='L891'></a><a href='#L891'>891</a>
|
|
957
|
+
<a name='L892'></a><a href='#L892'>892</a>
|
|
958
|
+
<a name='L893'></a><a href='#L893'>893</a>
|
|
959
|
+
<a name='L894'></a><a href='#L894'>894</a>
|
|
960
|
+
<a name='L895'></a><a href='#L895'>895</a>
|
|
961
|
+
<a name='L896'></a><a href='#L896'>896</a>
|
|
962
|
+
<a name='L897'></a><a href='#L897'>897</a>
|
|
963
|
+
<a name='L898'></a><a href='#L898'>898</a>
|
|
964
|
+
<a name='L899'></a><a href='#L899'>899</a>
|
|
965
|
+
<a name='L900'></a><a href='#L900'>900</a>
|
|
966
|
+
<a name='L901'></a><a href='#L901'>901</a>
|
|
967
|
+
<a name='L902'></a><a href='#L902'>902</a>
|
|
968
|
+
<a name='L903'></a><a href='#L903'>903</a>
|
|
969
|
+
<a name='L904'></a><a href='#L904'>904</a>
|
|
970
|
+
<a name='L905'></a><a href='#L905'>905</a>
|
|
971
|
+
<a name='L906'></a><a href='#L906'>906</a>
|
|
972
|
+
<a name='L907'></a><a href='#L907'>907</a>
|
|
973
|
+
<a name='L908'></a><a href='#L908'>908</a>
|
|
974
|
+
<a name='L909'></a><a href='#L909'>909</a>
|
|
975
|
+
<a name='L910'></a><a href='#L910'>910</a>
|
|
976
|
+
<a name='L911'></a><a href='#L911'>911</a>
|
|
977
|
+
<a name='L912'></a><a href='#L912'>912</a>
|
|
978
|
+
<a name='L913'></a><a href='#L913'>913</a>
|
|
979
|
+
<a name='L914'></a><a href='#L914'>914</a>
|
|
980
|
+
<a name='L915'></a><a href='#L915'>915</a>
|
|
981
|
+
<a name='L916'></a><a href='#L916'>916</a>
|
|
982
|
+
<a name='L917'></a><a href='#L917'>917</a>
|
|
983
|
+
<a name='L918'></a><a href='#L918'>918</a>
|
|
984
|
+
<a name='L919'></a><a href='#L919'>919</a>
|
|
985
|
+
<a name='L920'></a><a href='#L920'>920</a>
|
|
986
|
+
<a name='L921'></a><a href='#L921'>921</a>
|
|
987
|
+
<a name='L922'></a><a href='#L922'>922</a>
|
|
988
|
+
<a name='L923'></a><a href='#L923'>923</a>
|
|
989
|
+
<a name='L924'></a><a href='#L924'>924</a>
|
|
990
|
+
<a name='L925'></a><a href='#L925'>925</a>
|
|
991
|
+
<a name='L926'></a><a href='#L926'>926</a>
|
|
992
|
+
<a name='L927'></a><a href='#L927'>927</a>
|
|
993
|
+
<a name='L928'></a><a href='#L928'>928</a>
|
|
994
|
+
<a name='L929'></a><a href='#L929'>929</a>
|
|
995
|
+
<a name='L930'></a><a href='#L930'>930</a>
|
|
996
|
+
<a name='L931'></a><a href='#L931'>931</a>
|
|
997
|
+
<a name='L932'></a><a href='#L932'>932</a>
|
|
998
|
+
<a name='L933'></a><a href='#L933'>933</a>
|
|
999
|
+
<a name='L934'></a><a href='#L934'>934</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
1000
|
+
<span class="cline-any cline-yes">8x</span>
|
|
726
1001
|
<span class="cline-any cline-yes">1x</span>
|
|
727
1002
|
<span class="cline-any cline-no"> </span>
|
|
728
1003
|
<span class="cline-any cline-no"> </span>
|
|
@@ -733,7 +1008,7 @@
|
|
|
733
1008
|
<span class="cline-any cline-neutral"> </span>
|
|
734
1009
|
<span class="cline-any cline-yes">1x</span>
|
|
735
1010
|
<span class="cline-any cline-neutral"> </span>
|
|
736
|
-
<span class="cline-any cline-yes">
|
|
1011
|
+
<span class="cline-any cline-yes">8x</span>
|
|
737
1012
|
<span class="cline-any cline-yes">9x</span>
|
|
738
1013
|
<span class="cline-any cline-yes">3x</span>
|
|
739
1014
|
<span class="cline-any cline-yes">5x</span>
|
|
@@ -742,7 +1017,7 @@
|
|
|
742
1017
|
<span class="cline-any cline-yes">3x</span>
|
|
743
1018
|
<span class="cline-any cline-neutral"> </span>
|
|
744
1019
|
<span class="cline-any cline-neutral"> </span>
|
|
745
|
-
<span class="cline-any cline-yes">
|
|
1020
|
+
<span class="cline-any cline-yes">8x</span>
|
|
746
1021
|
<span class="cline-any cline-yes">19x</span>
|
|
747
1022
|
<span class="cline-any cline-yes">9x</span>
|
|
748
1023
|
<span class="cline-any cline-yes">27x</span>
|
|
@@ -769,7 +1044,7 @@
|
|
|
769
1044
|
<span class="cline-any cline-yes">9x</span>
|
|
770
1045
|
<span class="cline-any cline-neutral"> </span>
|
|
771
1046
|
<span class="cline-any cline-neutral"> </span>
|
|
772
|
-
<span class="cline-any cline-yes">
|
|
1047
|
+
<span class="cline-any cline-yes">8x</span>
|
|
773
1048
|
<span class="cline-any cline-yes">5x</span>
|
|
774
1049
|
<span class="cline-any cline-yes">10x</span>
|
|
775
1050
|
<span class="cline-any cline-no"> </span>
|
|
@@ -778,8 +1053,8 @@
|
|
|
778
1053
|
<span class="cline-any cline-neutral"> </span>
|
|
779
1054
|
<span class="cline-any cline-yes">5x</span>
|
|
780
1055
|
<span class="cline-any cline-neutral"> </span>
|
|
781
|
-
<span class="cline-any cline-yes">
|
|
782
|
-
<span class="cline-any cline-yes">
|
|
1056
|
+
<span class="cline-any cline-yes">8x</span>
|
|
1057
|
+
<span class="cline-any cline-yes">8x</span>
|
|
783
1058
|
<span class="cline-any cline-neutral"> </span>
|
|
784
1059
|
<span class="cline-any cline-neutral"> </span>
|
|
785
1060
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1092,18 +1367,18 @@
|
|
|
1092
1367
|
<span class="cline-any cline-neutral"> </span>
|
|
1093
1368
|
<span class="cline-any cline-neutral"> </span>
|
|
1094
1369
|
<span class="cline-any cline-neutral"> </span>
|
|
1095
|
-
<span class="cline-any cline-yes">
|
|
1096
|
-
<span class="cline-any cline-yes">
|
|
1097
|
-
<span class="cline-any cline-yes">
|
|
1098
|
-
<span class="cline-any cline-yes">
|
|
1099
|
-
<span class="cline-any cline-yes">
|
|
1100
|
-
<span class="cline-any cline-yes">
|
|
1101
|
-
<span class="cline-any cline-yes">
|
|
1102
|
-
<span class="cline-any cline-yes">
|
|
1370
|
+
<span class="cline-any cline-yes">15x</span>
|
|
1371
|
+
<span class="cline-any cline-yes">15x</span>
|
|
1372
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1373
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1374
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1375
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1376
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1377
|
+
<span class="cline-any cline-yes">90x</span>
|
|
1103
1378
|
<span class="cline-any cline-neutral"> </span>
|
|
1104
|
-
<span class="cline-any cline-yes">
|
|
1105
|
-
<span class="cline-any cline-yes">
|
|
1106
|
-
<span class="cline-any cline-yes">
|
|
1379
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1380
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1381
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1107
1382
|
<span class="cline-any cline-neutral"> </span>
|
|
1108
1383
|
<span class="cline-any cline-neutral"> </span>
|
|
1109
1384
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -1378,7 +1653,282 @@
|
|
|
1378
1653
|
<span class="cline-any cline-yes">2x</span>
|
|
1379
1654
|
<span class="cline-any cline-neutral"> </span>
|
|
1380
1655
|
<span class="cline-any cline-neutral"> </span>
|
|
1656
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1657
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1658
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1659
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1660
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1661
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1662
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1663
|
+
<span class="cline-any cline-yes">6x</span>
|
|
1664
|
+
<span class="cline-any cline-yes">6x</span>
|
|
1665
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1666
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1667
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1668
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1669
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1670
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1671
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1672
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1673
|
+
<span class="cline-any cline-yes">6x</span>
|
|
1674
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1675
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1676
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1677
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1678
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1679
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1680
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1681
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1682
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1683
|
+
<span class="cline-any cline-yes">6x</span>
|
|
1684
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1685
|
+
<span class="cline-any cline-yes">6x</span>
|
|
1686
|
+
<span class="cline-any cline-yes">6x</span>
|
|
1687
|
+
<span class="cline-any cline-yes">48x</span>
|
|
1688
|
+
<span class="cline-any cline-yes">48x</span>
|
|
1689
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1690
|
+
<span class="cline-any cline-yes">6x</span>
|
|
1691
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1692
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1693
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1694
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1695
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1696
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1697
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1698
|
+
<span class="cline-any cline-yes">8x</span>
|
|
1699
|
+
<span class="cline-any cline-yes">8x</span>
|
|
1700
|
+
<span class="cline-any cline-yes">8x</span>
|
|
1701
|
+
<span class="cline-any cline-yes">8x</span>
|
|
1702
|
+
<span class="cline-any cline-yes">8x</span>
|
|
1703
|
+
<span class="cline-any cline-yes">8x</span>
|
|
1704
|
+
<span class="cline-any cline-yes">8x</span>
|
|
1705
|
+
<span class="cline-any cline-yes">8x</span>
|
|
1706
|
+
<span class="cline-any cline-yes">8x</span>
|
|
1707
|
+
<span class="cline-any cline-yes">8x</span>
|
|
1708
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1709
|
+
<span class="cline-any cline-yes">7x</span>
|
|
1710
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1711
|
+
<span class="cline-any cline-yes">6x</span>
|
|
1712
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1713
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1714
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1715
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1716
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1717
|
+
<span class="cline-any cline-yes">3x</span>
|
|
1718
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1719
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1720
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1721
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1722
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1723
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1724
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1725
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1726
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1727
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1728
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1729
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1730
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1731
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1732
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1733
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1734
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1735
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1736
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1737
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1738
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1739
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1740
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1741
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1742
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1743
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1744
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1745
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1746
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1747
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1748
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1749
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1750
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1751
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1752
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1753
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1754
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1755
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1756
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1757
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1758
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1759
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1760
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1761
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1762
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1763
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1764
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1765
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1766
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1767
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1768
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1769
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1770
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1771
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1772
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1773
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1774
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1775
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1776
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1777
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1778
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1779
|
+
<span class="cline-any cline-yes">7x</span>
|
|
1381
1780
|
<span class="cline-any cline-yes">7x</span>
|
|
1781
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1782
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1783
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1784
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1785
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1786
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1787
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1788
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1789
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1790
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1791
|
+
<span class="cline-any cline-yes">13x</span>
|
|
1792
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1793
|
+
<span class="cline-any cline-yes">12x</span>
|
|
1794
|
+
<span class="cline-any cline-yes">12x</span>
|
|
1795
|
+
<span class="cline-any cline-yes">12x</span>
|
|
1796
|
+
<span class="cline-any cline-yes">12x</span>
|
|
1797
|
+
<span class="cline-any cline-yes">13x</span>
|
|
1798
|
+
<span class="cline-any cline-yes">13x</span>
|
|
1799
|
+
<span class="cline-any cline-yes">13x</span>
|
|
1800
|
+
<span class="cline-any cline-yes">52x</span>
|
|
1801
|
+
<span class="cline-any cline-yes">52x</span>
|
|
1802
|
+
<span class="cline-any cline-yes">52x</span>
|
|
1803
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1804
|
+
<span class="cline-any cline-yes">23x</span>
|
|
1805
|
+
<span class="cline-any cline-yes">17x</span>
|
|
1806
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1807
|
+
<span class="cline-any cline-yes">23x</span>
|
|
1808
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1809
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1810
|
+
<span class="cline-any cline-yes">13x</span>
|
|
1811
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1812
|
+
<span class="cline-any cline-yes">12x</span>
|
|
1813
|
+
<span class="cline-any cline-yes">12x</span>
|
|
1814
|
+
<span class="cline-any cline-yes">12x</span>
|
|
1815
|
+
<span class="cline-any cline-yes">12x</span>
|
|
1816
|
+
<span class="cline-any cline-yes">16x</span>
|
|
1817
|
+
<span class="cline-any cline-yes">16x</span>
|
|
1818
|
+
<span class="cline-any cline-yes">13x</span>
|
|
1819
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1820
|
+
<span class="cline-any cline-yes">13x</span>
|
|
1821
|
+
<span class="cline-any cline-yes">3x</span>
|
|
1822
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1823
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1824
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1825
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1826
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1827
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1828
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1829
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1830
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1831
|
+
<span class="cline-any cline-yes">10x</span>
|
|
1832
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1833
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1834
|
+
<span class="cline-any cline-yes">16x</span>
|
|
1835
|
+
<span class="cline-any cline-yes">16x</span>
|
|
1836
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1837
|
+
<span class="cline-any cline-yes">12x</span>
|
|
1838
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1839
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1840
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1841
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1842
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1843
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1844
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1845
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1846
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1847
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1848
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1849
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1850
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1851
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1852
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1853
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1854
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1855
|
+
<span class="cline-any cline-yes">9x</span>
|
|
1856
|
+
<span class="cline-any cline-yes">9x</span>
|
|
1857
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1858
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1859
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1860
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1861
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1862
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1863
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1864
|
+
<span class="cline-any cline-yes">8x</span>
|
|
1865
|
+
<span class="cline-any cline-yes">8x</span>
|
|
1866
|
+
<span class="cline-any cline-yes">8x</span>
|
|
1867
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1868
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1869
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1870
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1871
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1872
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1873
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1874
|
+
<span class="cline-any cline-yes">8x</span>
|
|
1875
|
+
<span class="cline-any cline-yes">8x</span>
|
|
1876
|
+
<span class="cline-any cline-yes">5x</span>
|
|
1877
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1878
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1879
|
+
<span class="cline-any cline-yes">3x</span>
|
|
1880
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1881
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1882
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1883
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1884
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1885
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1886
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1887
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1888
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1889
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1890
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1891
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1892
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1893
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1894
|
+
<span class="cline-any cline-no"> </span>
|
|
1895
|
+
<span class="cline-any cline-no"> </span>
|
|
1896
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1897
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1898
|
+
<span class="cline-any cline-yes">3x</span>
|
|
1899
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1900
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1901
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1902
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1903
|
+
<span class="cline-any cline-no"> </span>
|
|
1904
|
+
<span class="cline-any cline-no"> </span>
|
|
1905
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1906
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1907
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1908
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1909
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1910
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1911
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1912
|
+
<span class="cline-any cline-no"> </span>
|
|
1913
|
+
<span class="cline-any cline-no"> </span>
|
|
1914
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1915
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1916
|
+
<span class="cline-any cline-no"> </span>
|
|
1917
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1918
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1919
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1920
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1921
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1922
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1923
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1924
|
+
<span class="cline-any cline-yes">3x</span>
|
|
1925
|
+
<span class="cline-any cline-yes">3x</span>
|
|
1926
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1927
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1928
|
+
<span class="cline-any cline-yes">2x</span>
|
|
1929
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1930
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1931
|
+
<span class="cline-any cline-yes">8x</span>
|
|
1382
1932
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">"use strict";
|
|
1383
1933
|
var __assign = (this && this.__assign) || function () {
|
|
1384
1934
|
__assign = Object.assign || <span class="fstat-no" title="function not covered" ><span class="branch-1 cbranch-no" title="branch not covered" >fu</span>nction(t) {</span>
|
|
@@ -2007,7 +2557,7 @@ var util = {
|
|
|
2007
2557
|
objectToQueryString: function (obj) {
|
|
2008
2558
|
return Object.entries(obj)
|
|
2009
2559
|
.filter(function (_a) {
|
|
2010
|
-
var
|
|
2560
|
+
var value = _a[1];
|
|
2011
2561
|
return value !== undefined && value !== null;
|
|
2012
2562
|
})
|
|
2013
2563
|
.map(function (_a) {
|
|
@@ -2034,6 +2584,281 @@ var util = {
|
|
|
2034
2584
|
var end = str.substring(str.length - visibleEnd);
|
|
2035
2585
|
var masked = maskChar.repeat(str.length - visibleStart - visibleEnd);
|
|
2036
2586
|
return start + masked + end;
|
|
2587
|
+
},
|
|
2588
|
+
// ==================== Date Utilities (v0.2.0) ====================
|
|
2589
|
+
/**
|
|
2590
|
+
* @description Format date with custom format tokens
|
|
2591
|
+
* @param date Date object or date string
|
|
2592
|
+
* @param format Format string with tokens (YYYY, MM, DD, HH, mm, ss, ddd, dddd)
|
|
2593
|
+
* @returns Formatted date string
|
|
2594
|
+
*/
|
|
2595
|
+
formatDateAdvanced: function (date, format) {
|
|
2596
|
+
var d = new Date(date);
|
|
2597
|
+
var weekdays = [
|
|
2598
|
+
'일요일',
|
|
2599
|
+
'월요일',
|
|
2600
|
+
'화요일',
|
|
2601
|
+
'수요일',
|
|
2602
|
+
'목요일',
|
|
2603
|
+
'금요일',
|
|
2604
|
+
'토요일'
|
|
2605
|
+
];
|
|
2606
|
+
var replacements = {
|
|
2607
|
+
YYYY: d.getFullYear().toString(),
|
|
2608
|
+
MM: (d.getMonth() + 1).toString().padStart(2, '0'),
|
|
2609
|
+
DD: d.getDate().toString().padStart(2, '0'),
|
|
2610
|
+
HH: d.getHours().toString().padStart(2, '0'),
|
|
2611
|
+
mm: d.getMinutes().toString().padStart(2, '0'),
|
|
2612
|
+
ss: d.getSeconds().toString().padStart(2, '0'),
|
|
2613
|
+
dddd: weekdays[d.getDay()],
|
|
2614
|
+
ddd: weekdays[d.getDay()].charAt(0)
|
|
2615
|
+
};
|
|
2616
|
+
var result = format;
|
|
2617
|
+
// Replace longer tokens first to avoid partial matches
|
|
2618
|
+
var tokens = ['YYYY', 'dddd', 'ddd', 'MM', 'DD', 'HH', 'mm', 'ss'];
|
|
2619
|
+
for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {
|
|
2620
|
+
var token = tokens_1[_i];
|
|
2621
|
+
result = result.replace(new RegExp(token, 'g'), replacements[token]);
|
|
2622
|
+
}
|
|
2623
|
+
return result;
|
|
2624
|
+
},
|
|
2625
|
+
/**
|
|
2626
|
+
* @description Get relative time string in Korean
|
|
2627
|
+
* @param date Date object or date string
|
|
2628
|
+
* @returns Korean relative time string (e.g., '방금 전', '5분 전', '어제')
|
|
2629
|
+
*/
|
|
2630
|
+
timeAgo: function (date) {
|
|
2631
|
+
var now = Date.now();
|
|
2632
|
+
var past = new Date(date).getTime();
|
|
2633
|
+
var diff = now - past;
|
|
2634
|
+
var minute = 60 * 1000;
|
|
2635
|
+
var hour = 60 * minute;
|
|
2636
|
+
var day = 24 * hour;
|
|
2637
|
+
var week = 7 * day;
|
|
2638
|
+
var month = 30 * day;
|
|
2639
|
+
var year = 365 * day;
|
|
2640
|
+
if (diff < minute)
|
|
2641
|
+
return '방금 전';
|
|
2642
|
+
if (diff < hour)
|
|
2643
|
+
return "".concat(Math.floor(diff / minute), "\uBD84 \uC804");
|
|
2644
|
+
if (diff < day)
|
|
2645
|
+
return "".concat(Math.floor(diff / hour), "\uC2DC\uAC04 \uC804");
|
|
2646
|
+
if (diff < 2 * day)
|
|
2647
|
+
return '어제';
|
|
2648
|
+
if (diff < week)
|
|
2649
|
+
return "".concat(Math.floor(diff / day), "\uC77C \uC804");
|
|
2650
|
+
if (diff < month)
|
|
2651
|
+
return "".concat(Math.floor(diff / week), "\uC8FC \uC804");
|
|
2652
|
+
if (diff < year)
|
|
2653
|
+
return "".concat(Math.floor(diff / month), "\uAC1C\uC6D4 \uC804");
|
|
2654
|
+
return "".concat(Math.floor(diff / year), "\uB144 \uC804");
|
|
2655
|
+
},
|
|
2656
|
+
/**
|
|
2657
|
+
* @description Get the number of days in a month
|
|
2658
|
+
* @param year Year (e.g., 2025)
|
|
2659
|
+
* @param month Month (1-12)
|
|
2660
|
+
* @returns Number of days in the month
|
|
2661
|
+
*/
|
|
2662
|
+
getDaysInMonth: function (year, month) {
|
|
2663
|
+
return new Date(year, month, 0).getDate();
|
|
2664
|
+
},
|
|
2665
|
+
/**
|
|
2666
|
+
* @description Check if a year is a leap year
|
|
2667
|
+
* @param year Year to check
|
|
2668
|
+
* @returns true if leap year, false otherwise
|
|
2669
|
+
*/
|
|
2670
|
+
isLeapYear: function (year) {
|
|
2671
|
+
return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
|
|
2672
|
+
},
|
|
2673
|
+
// ==================== Number Utilities (v0.2.0) ====================
|
|
2674
|
+
/**
|
|
2675
|
+
* @description Format number with thousand separators
|
|
2676
|
+
* @param num Number to format
|
|
2677
|
+
* @returns Formatted string with commas
|
|
2678
|
+
*/
|
|
2679
|
+
formatNumber: function (num) {
|
|
2680
|
+
return num.toLocaleString('en-US');
|
|
2681
|
+
},
|
|
2682
|
+
/**
|
|
2683
|
+
* @description Format number as currency
|
|
2684
|
+
* @param amount Amount to format
|
|
2685
|
+
* @param currency Currency code (KRW, USD, EUR, JPY, CNY)
|
|
2686
|
+
* @returns Formatted currency string
|
|
2687
|
+
*/
|
|
2688
|
+
formatCurrency: function (amount, currency) {
|
|
2689
|
+
if (currency === void 0) { currency = 'KRW'; }
|
|
2690
|
+
var formatted = util.formatNumber(amount);
|
|
2691
|
+
var symbols = {
|
|
2692
|
+
KRW: { symbol: '원', prefix: false },
|
|
2693
|
+
USD: { symbol: '$', prefix: true },
|
|
2694
|
+
EUR: { symbol: '€', prefix: true },
|
|
2695
|
+
JPY: { symbol: '¥', prefix: true },
|
|
2696
|
+
CNY: { symbol: '¥', prefix: true }
|
|
2697
|
+
};
|
|
2698
|
+
var _a = symbols[currency], symbol = _a.symbol, prefix = _a.prefix;
|
|
2699
|
+
return prefix ? "".concat(symbol).concat(formatted) : "".concat(formatted).concat(symbol);
|
|
2700
|
+
},
|
|
2701
|
+
/**
|
|
2702
|
+
* @description Format bytes to human-readable file size
|
|
2703
|
+
* @param bytes Number of bytes
|
|
2704
|
+
* @param precision Decimal precision (default: 0 for B/KB, 2 for larger)
|
|
2705
|
+
* @returns Formatted file size string
|
|
2706
|
+
*/
|
|
2707
|
+
formatFileSize: function (bytes, precision) {
|
|
2708
|
+
var units = ['B', 'KB', 'MB', 'GB', 'TB'];
|
|
2709
|
+
var size = bytes;
|
|
2710
|
+
var unitIndex = 0;
|
|
2711
|
+
while (size >= 1024 && unitIndex < units.length - 1) {
|
|
2712
|
+
size /= 1024;
|
|
2713
|
+
unitIndex++;
|
|
2714
|
+
}
|
|
2715
|
+
var decimals = precision !== undefined ? precision : unitIndex === 0 ? 0 : 0;
|
|
2716
|
+
return "".concat(size.toFixed(decimals), " ").concat(units[unitIndex]);
|
|
2717
|
+
},
|
|
2718
|
+
/**
|
|
2719
|
+
* @description Convert number to Korean words
|
|
2720
|
+
* @param num Number to convert
|
|
2721
|
+
* @returns Korean number string (e.g., '천이백삼십사')
|
|
2722
|
+
*/
|
|
2723
|
+
numberToKorean: function (num) {
|
|
2724
|
+
if (num === 0)
|
|
2725
|
+
return '영';
|
|
2726
|
+
var digits = ['', '일', '이', '삼', '사', '오', '육', '칠', '팔', '구'];
|
|
2727
|
+
var units = ['', '십', '백', '천'];
|
|
2728
|
+
var bigUnits = ['', '만', '억', '조'];
|
|
2729
|
+
var processGroup = function (n) {
|
|
2730
|
+
var result = '';
|
|
2731
|
+
var temp = n;
|
|
2732
|
+
for (var i = 3; i >= 0; i--) {
|
|
2733
|
+
var digit = Math.floor(temp / Math.pow(10, i));
|
|
2734
|
+
temp %= Math.pow(10, i);
|
|
2735
|
+
if (digit > 0) {
|
|
2736
|
+
// Omit '일' before 십, 백, 천 (but not for units[0])
|
|
2737
|
+
if (digit > 1 || i === 0) {
|
|
2738
|
+
result += digits[digit];
|
|
2739
|
+
}
|
|
2740
|
+
result += units[i];
|
|
2741
|
+
}
|
|
2742
|
+
}
|
|
2743
|
+
return result;
|
|
2744
|
+
};
|
|
2745
|
+
var result = '';
|
|
2746
|
+
var groupIndex = 0;
|
|
2747
|
+
var remaining = num;
|
|
2748
|
+
while (remaining > 0) {
|
|
2749
|
+
var group = remaining % 10000;
|
|
2750
|
+
if (group > 0) {
|
|
2751
|
+
var groupStr = processGroup(group);
|
|
2752
|
+
// '만' 단위에서 1은 생략, '억' 이상에서는 '일' 포함
|
|
2753
|
+
if (group === 1 && groupIndex >= 1) {
|
|
2754
|
+
if (groupIndex >= 2) {
|
|
2755
|
+
// 억 이상: '일억', '일조'
|
|
2756
|
+
result = '일' + bigUnits[groupIndex] + result;
|
|
2757
|
+
}
|
|
2758
|
+
else {
|
|
2759
|
+
// 만: '만' (일 생략)
|
|
2760
|
+
result = bigUnits[groupIndex] + result;
|
|
2761
|
+
}
|
|
2762
|
+
}
|
|
2763
|
+
else {
|
|
2764
|
+
result = groupStr + bigUnits[groupIndex] + result;
|
|
2765
|
+
}
|
|
2766
|
+
}
|
|
2767
|
+
remaining = Math.floor(remaining / 10000);
|
|
2768
|
+
groupIndex++;
|
|
2769
|
+
}
|
|
2770
|
+
return result;
|
|
2771
|
+
},
|
|
2772
|
+
/**
|
|
2773
|
+
* @description Parse number from formatted string
|
|
2774
|
+
* @param str String containing number (with commas, currency symbols, etc.)
|
|
2775
|
+
* @returns Parsed number
|
|
2776
|
+
*/
|
|
2777
|
+
parseNumberFromString: function (str) {
|
|
2778
|
+
var cleaned = str.replace(/[^0-9.-]/g, '');
|
|
2779
|
+
return parseFloat(cleaned);
|
|
2780
|
+
},
|
|
2781
|
+
// ==================== Validation Utilities (v0.2.0) ====================
|
|
2782
|
+
/**
|
|
2783
|
+
* @description Validate email address
|
|
2784
|
+
* @param email Email address to validate
|
|
2785
|
+
* @returns true if valid email, false otherwise
|
|
2786
|
+
*/
|
|
2787
|
+
isEmail: function (email) {
|
|
2788
|
+
var emailRegex = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
|
|
2789
|
+
return emailRegex.test(email);
|
|
2790
|
+
},
|
|
2791
|
+
/**
|
|
2792
|
+
* @description Validate Korean phone number
|
|
2793
|
+
* @param phone Phone number to validate
|
|
2794
|
+
* @returns true if valid Korean phone number, false otherwise
|
|
2795
|
+
*/
|
|
2796
|
+
isPhoneNumber: function (phone) {
|
|
2797
|
+
var mobileRegex = /^01[016789]-?\d{3,4}-?\d{4}$/;
|
|
2798
|
+
var landlineRegex = /^0[2-6][1-5]?-?\d{3,4}-?\d{4}$/;
|
|
2799
|
+
return mobileRegex.test(phone) || landlineRegex.test(phone);
|
|
2800
|
+
},
|
|
2801
|
+
/**
|
|
2802
|
+
* @description Validate URL
|
|
2803
|
+
* @param url URL to validate
|
|
2804
|
+
* @returns true if valid URL, false otherwise
|
|
2805
|
+
*/
|
|
2806
|
+
isUrl: function (url) {
|
|
2807
|
+
try {
|
|
2808
|
+
var parsed = new URL(url);
|
|
2809
|
+
return ['http:', 'https:', 'ftp:'].includes(parsed.protocol);
|
|
2810
|
+
}
|
|
2811
|
+
catch (_a) {
|
|
2812
|
+
return false;
|
|
2813
|
+
}
|
|
2814
|
+
},
|
|
2815
|
+
/**
|
|
2816
|
+
* @description Format Korean phone number with hyphens
|
|
2817
|
+
* @param phone Phone number to format
|
|
2818
|
+
* @returns Formatted phone number
|
|
2819
|
+
*/
|
|
2820
|
+
formatPhoneNumber: function (phone) {
|
|
2821
|
+
var digits = phone.replace(/[^0-9]/g, '');
|
|
2822
|
+
if (digits.startsWith('02')) {
|
|
2823
|
+
// Seoul: 02-XXXX-XXXX
|
|
2824
|
+
if (digits.length === 10) {
|
|
2825
|
+
return "".concat(digits.slice(0, 2), "-").concat(digits.slice(2, 6), "-").concat(digits.slice(6));
|
|
2826
|
+
}
|
|
2827
|
+
else <span class="cstat-no" title="statement not covered" ><span class="missing-if-branch" title="else path not taken" >E</span>if (digits.length === 9) {</span>
|
|
2828
|
+
<span class="cstat-no" title="statement not covered" > return "".concat(digits.slice(0, 2), "-").concat(digits.slice(2, 5), "-").concat(digits.slice(5));</span>
|
|
2829
|
+
}
|
|
2830
|
+
}
|
|
2831
|
+
else if (digits.startsWith('01')) {
|
|
2832
|
+
// Mobile: 01X-XXXX-XXXX or 01X-XXX-XXXX
|
|
2833
|
+
if (digits.length === 11) {
|
|
2834
|
+
return "".concat(digits.slice(0, 3), "-").concat(digits.slice(3, 7), "-").concat(digits.slice(7));
|
|
2835
|
+
}
|
|
2836
|
+
else <span class="cstat-no" title="statement not covered" ><span class="missing-if-branch" title="else path not taken" >E</span>if (digits.length === 10) {</span>
|
|
2837
|
+
<span class="cstat-no" title="statement not covered" > return "".concat(digits.slice(0, 3), "-").concat(digits.slice(3, 6), "-").concat(digits.slice(6));</span>
|
|
2838
|
+
}
|
|
2839
|
+
}
|
|
2840
|
+
else <span class="missing-if-branch" title="else path not taken" >E</span>if (/^0[3-6]/.test(digits)) {
|
|
2841
|
+
// Area code: 0XX-XXXX-XXXX
|
|
2842
|
+
if (digits.length === 11) {
|
|
2843
|
+
return "".concat(digits.slice(0, 3), "-").concat(digits.slice(3, 7), "-").concat(digits.slice(7));
|
|
2844
|
+
}
|
|
2845
|
+
else <span class="cstat-no" title="statement not covered" ><span class="missing-if-branch" title="else path not taken" >E</span>if (digits.length === 10) {</span>
|
|
2846
|
+
<span class="cstat-no" title="statement not covered" > return "".concat(digits.slice(0, 3), "-").concat(digits.slice(3, 6), "-").concat(digits.slice(6));</span>
|
|
2847
|
+
}
|
|
2848
|
+
}
|
|
2849
|
+
<span class="cstat-no" title="statement not covered" > return phone;</span>
|
|
2850
|
+
},
|
|
2851
|
+
/**
|
|
2852
|
+
* @description Format Korean business registration number
|
|
2853
|
+
* @param brn Business registration number
|
|
2854
|
+
* @returns Formatted business number (XXX-XX-XXXXX)
|
|
2855
|
+
*/
|
|
2856
|
+
formatBusinessNumber: function (brn) {
|
|
2857
|
+
var digits = brn.replace(/[^0-9]/g, '');
|
|
2858
|
+
if (digits.length !== 10) {
|
|
2859
|
+
return brn;
|
|
2860
|
+
}
|
|
2861
|
+
return "".concat(digits.slice(0, 3), "-").concat(digits.slice(3, 5), "-").concat(digits.slice(5));
|
|
2037
2862
|
}
|
|
2038
2863
|
};
|
|
2039
2864
|
exports.default = util;
|
|
@@ -2044,7 +2869,7 @@ exports.default = util;
|
|
|
2044
2869
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
2045
2870
|
Code coverage generated by
|
|
2046
2871
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
2047
|
-
at 2025-
|
|
2872
|
+
at 2025-12-26T02:22:49.618Z
|
|
2048
2873
|
</div>
|
|
2049
2874
|
<script src="prettify.js"></script>
|
|
2050
2875
|
<script>
|