@wirenboard/json-editor 2.5.3-wb13

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.
Files changed (283) hide show
  1. package/.env-dist +2 -0
  2. package/.eslintrc +7 -0
  3. package/.gitattributes +1 -0
  4. package/.github/PULL_REQUEST_TEMPLATE.md +9 -0
  5. package/.github/issue_template +25 -0
  6. package/.github/workflows/build.yml +58 -0
  7. package/.travis.yml +70 -0
  8. package/CHANGELOG.md +915 -0
  9. package/CONTRIBUTING.md +92 -0
  10. package/LICENSE +20 -0
  11. package/Makefile +26 -0
  12. package/README.md +1646 -0
  13. package/README_ADDON.md +573 -0
  14. package/UPGRADING.md +46 -0
  15. package/build/CssToJson.js +55 -0
  16. package/codecept.conf.js +35 -0
  17. package/config/.eslintrc +7 -0
  18. package/config/codeceptjs_helpers.js +139 -0
  19. package/config/helpers.js +10 -0
  20. package/config/karma.conf.js +93 -0
  21. package/config/readme.md +31 -0
  22. package/config/webpack.common.js +75 -0
  23. package/config/webpack.dev.js +15 -0
  24. package/config/webpack.nonmin.js +19 -0
  25. package/config/webpack.prod.js +25 -0
  26. package/dist/jsoneditor.js +14 -0
  27. package/dist/nonmin/jsoneditor.js +29097 -0
  28. package/dist/nonmin/jsoneditor.js.map +1 -0
  29. package/docs/ace_editor.html +56 -0
  30. package/docs/advanced.html +136 -0
  31. package/docs/basic.html +63 -0
  32. package/docs/basic_person.json +26 -0
  33. package/docs/choices.html +86 -0
  34. package/docs/cleave.html +132 -0
  35. package/docs/colorpicker.html +194 -0
  36. package/docs/css_integration.html +135 -0
  37. package/docs/datetime.html +305 -0
  38. package/docs/describedby.html +161 -0
  39. package/docs/enumsource.html +67 -0
  40. package/docs/images/categoriesDemo.png +0 -0
  41. package/docs/images/inheritance_tree.png +0 -0
  42. package/docs/images/jsoneditor.png +0 -0
  43. package/docs/imask.html +192 -0
  44. package/docs/index.html +579 -0
  45. package/docs/materialize_css.html +164 -0
  46. package/docs/meta_schema.json +705 -0
  47. package/docs/multiple_upload_base64.html +65 -0
  48. package/docs/person.json +73 -0
  49. package/docs/polyfills/assign.js +29 -0
  50. package/docs/radio.html +156 -0
  51. package/docs/recursive.html +170 -0
  52. package/docs/select2.html +99 -0
  53. package/docs/selectize.html +100 -0
  54. package/docs/signature.html +42 -0
  55. package/docs/starrating.html +137 -0
  56. package/docs/upload.html +131 -0
  57. package/docs/uuid.html +70 -0
  58. package/docs/wysiwyg.html +56 -0
  59. package/jasmine.json +11 -0
  60. package/json-editor-json-editor-2.5.3-wb13.tgz +0 -0
  61. package/package.json +100 -0
  62. package/release-notes.md +88 -0
  63. package/src/core.js +412 -0
  64. package/src/defaults.js +402 -0
  65. package/src/editor.js +707 -0
  66. package/src/editors/ace.js +89 -0
  67. package/src/editors/array/choices.js +103 -0
  68. package/src/editors/array/select2.js +110 -0
  69. package/src/editors/array/selectize.js +103 -0
  70. package/src/editors/array.css +9 -0
  71. package/src/editors/array.css.js +3 -0
  72. package/src/editors/array.js +818 -0
  73. package/src/editors/autocomplete.js +58 -0
  74. package/src/editors/base64.js +157 -0
  75. package/src/editors/button.js +97 -0
  76. package/src/editors/checkbox.js +95 -0
  77. package/src/editors/choices.css +3 -0
  78. package/src/editors/choices.css.js +3 -0
  79. package/src/editors/choices.js +69 -0
  80. package/src/editors/colorpicker.js +103 -0
  81. package/src/editors/datetime.js +141 -0
  82. package/src/editors/describedby.js +188 -0
  83. package/src/editors/enum.js +136 -0
  84. package/src/editors/hidden.js +127 -0
  85. package/src/editors/index.js +81 -0
  86. package/src/editors/info.js +20 -0
  87. package/src/editors/integer.js +19 -0
  88. package/src/editors/ip.js +36 -0
  89. package/src/editors/jodit.js +64 -0
  90. package/src/editors/multiple.js +409 -0
  91. package/src/editors/multiselect.js +218 -0
  92. package/src/editors/null.js +18 -0
  93. package/src/editors/number.js +51 -0
  94. package/src/editors/object.css +41 -0
  95. package/src/editors/object.css.js +3 -0
  96. package/src/editors/object.js +1290 -0
  97. package/src/editors/radio.js +111 -0
  98. package/src/editors/sceditor.js +72 -0
  99. package/src/editors/select.js +370 -0
  100. package/src/editors/select2.js +110 -0
  101. package/src/editors/selectize.js +112 -0
  102. package/src/editors/signature.js +113 -0
  103. package/src/editors/simplemde.js +100 -0
  104. package/src/editors/starrating.css +52 -0
  105. package/src/editors/starrating.css.js +3 -0
  106. package/src/editors/starrating.js +135 -0
  107. package/src/editors/stepper.js +27 -0
  108. package/src/editors/string.js +372 -0
  109. package/src/editors/table.js +516 -0
  110. package/src/editors/upload.js +321 -0
  111. package/src/editors/uuid.js +56 -0
  112. package/src/iconlib.js +24 -0
  113. package/src/iconlibs/bootstrap2.js +28 -0
  114. package/src/iconlibs/bootstrap3.js +28 -0
  115. package/src/iconlibs/fontawesome3.js +28 -0
  116. package/src/iconlibs/fontawesome4.js +28 -0
  117. package/src/iconlibs/fontawesome5.js +28 -0
  118. package/src/iconlibs/foundation2.js +24 -0
  119. package/src/iconlibs/foundation3.js +28 -0
  120. package/src/iconlibs/index.js +25 -0
  121. package/src/iconlibs/jqueryui.js +28 -0
  122. package/src/iconlibs/materialicons.js +49 -0
  123. package/src/iconlibs/openiconic.js +28 -0
  124. package/src/iconlibs/spectre.js +28 -0
  125. package/src/resolvers.js +128 -0
  126. package/src/schemaloader.js +408 -0
  127. package/src/style.css +150 -0
  128. package/src/style.css.js +3 -0
  129. package/src/templates/default.js +52 -0
  130. package/src/templates/ejs.js +13 -0
  131. package/src/templates/handlebars.js +1 -0
  132. package/src/templates/hogan.js +10 -0
  133. package/src/templates/index.js +21 -0
  134. package/src/templates/lodash.js +9 -0
  135. package/src/templates/markup.js +9 -0
  136. package/src/templates/mustache.js +9 -0
  137. package/src/templates/swig.js +1 -0
  138. package/src/templates/underscore.js +9 -0
  139. package/src/theme.js +659 -0
  140. package/src/themes/barebones.css +35 -0
  141. package/src/themes/barebones.css.js +3 -0
  142. package/src/themes/barebones.js +28 -0
  143. package/src/themes/bootstrap2.js +319 -0
  144. package/src/themes/bootstrap3.css +0 -0
  145. package/src/themes/bootstrap3.css.js +3 -0
  146. package/src/themes/bootstrap3.js +315 -0
  147. package/src/themes/bootstrap4.css +89 -0
  148. package/src/themes/bootstrap4.css.js +3 -0
  149. package/src/themes/bootstrap4.js +690 -0
  150. package/src/themes/bootstrap5.css.js +3 -0
  151. package/src/themes/foundation.js +569 -0
  152. package/src/themes/html.css +60 -0
  153. package/src/themes/html.css.js +3 -0
  154. package/src/themes/html.js +71 -0
  155. package/src/themes/index.js +28 -0
  156. package/src/themes/jqueryui.js +198 -0
  157. package/src/themes/materialize.js +426 -0
  158. package/src/themes/spectre.css +208 -0
  159. package/src/themes/spectre.css.js +3 -0
  160. package/src/themes/spectre.js +406 -0
  161. package/src/themes/tailwind.css +249 -0
  162. package/src/themes/tailwind.css.js +3 -0
  163. package/src/themes/tailwind.js +443 -0
  164. package/src/utilities.js +138 -0
  165. package/src/validator.js +877 -0
  166. package/src/validators/ip-validator.js +51 -0
  167. package/tests/Dockerfile +3 -0
  168. package/tests/README.md +48 -0
  169. package/tests/codeceptjs/codecept.json +42 -0
  170. package/tests/codeceptjs/constrains/if-then-else_test.js +143 -0
  171. package/tests/codeceptjs/core_test.js +217 -0
  172. package/tests/codeceptjs/editors/advanced_test.js +13 -0
  173. package/tests/codeceptjs/editors/array_any_of_test.js +50 -0
  174. package/tests/codeceptjs/editors/array_test.js +900 -0
  175. package/tests/codeceptjs/editors/button_test.js +35 -0
  176. package/tests/codeceptjs/editors/checkbox_test.js +21 -0
  177. package/tests/codeceptjs/editors/colorpicker_test.js +27 -0
  178. package/tests/codeceptjs/editors/datetime_test.js +33 -0
  179. package/tests/codeceptjs/editors/inheritance_test.js +11 -0
  180. package/tests/codeceptjs/editors/integer_test.js +84 -0
  181. package/tests/codeceptjs/editors/issues/issue-gh-812_test.js +32 -0
  182. package/tests/codeceptjs/editors/jodit_test.js +24 -0
  183. package/tests/codeceptjs/editors/multiselect_test.js +8 -0
  184. package/tests/codeceptjs/editors/number_test.js +82 -0
  185. package/tests/codeceptjs/editors/object_test.js +204 -0
  186. package/tests/codeceptjs/editors/option-no_default_values_test.js +42 -0
  187. package/tests/codeceptjs/editors/programmatic-changes_test.js +20 -0
  188. package/tests/codeceptjs/editors/radio_test.js +10 -0
  189. package/tests/codeceptjs/editors/rating_test.js +13 -0
  190. package/tests/codeceptjs/editors/select_test.js +22 -0
  191. package/tests/codeceptjs/editors/stepper_test.js +27 -0
  192. package/tests/codeceptjs/editors/string_test.js +118 -0
  193. package/tests/codeceptjs/editors/table-confirm-delete_test.js +67 -0
  194. package/tests/codeceptjs/editors/tabs_test.js +14 -0
  195. package/tests/codeceptjs/editors/uuid_test.js +21 -0
  196. package/tests/codeceptjs/editors/validation_test.js +14 -0
  197. package/tests/codeceptjs/meta-schema_test.js +17 -0
  198. package/tests/codeceptjs/schemaloader_test.js +13 -0
  199. package/tests/codeceptjs/steps.d.ts +13 -0
  200. package/tests/codeceptjs/steps_file.js +12 -0
  201. package/tests/codeceptjs/themes_test.js +519 -0
  202. package/tests/docker-compose.yml +34 -0
  203. package/tests/fixtures/basic_person.json +26 -0
  204. package/tests/fixtures/nested_object.json +26 -0
  205. package/tests/fixtures/person.json +55 -0
  206. package/tests/fixtures/recursive.json +8 -0
  207. package/tests/fixtures/some_types.json +32 -0
  208. package/tests/fixtures/string.json +3 -0
  209. package/tests/fixtures/validation.json +1140 -0
  210. package/tests/pages/_demo.html +475 -0
  211. package/tests/pages/advanced.html +137 -0
  212. package/tests/pages/anyof.html +80 -0
  213. package/tests/pages/array-anyof.html +142 -0
  214. package/tests/pages/array-checkboxes.html +41 -0
  215. package/tests/pages/array-choices.html +45 -0
  216. package/tests/pages/array-integers.html +37 -0
  217. package/tests/pages/array-move-events.html +61 -0
  218. package/tests/pages/array-multiselects.html +42 -0
  219. package/tests/pages/array-nested-arrays.html +40 -0
  220. package/tests/pages/array-numbers.html +37 -0
  221. package/tests/pages/array-objects.html +42 -0
  222. package/tests/pages/array-ratings.html +40 -0
  223. package/tests/pages/array-selectize.html +51 -0
  224. package/tests/pages/array-selects.html +36 -0
  225. package/tests/pages/array-strings.html +36 -0
  226. package/tests/pages/array.html +42 -0
  227. package/tests/pages/assets/pages.css +130 -0
  228. package/tests/pages/button-callbacks.html +77 -0
  229. package/tests/pages/checkbox-labels.html +114 -0
  230. package/tests/pages/colorpicker-no-3rd-party.html +43 -0
  231. package/tests/pages/colorpicker-use-vanilla-picker.html +50 -0
  232. package/tests/pages/core.html +118 -0
  233. package/tests/pages/datetime.html +76 -0
  234. package/tests/pages/form-name.html +108 -0
  235. package/tests/pages/grid-strict.html +311 -0
  236. package/tests/pages/grid.html +284 -0
  237. package/tests/pages/if-then-else-allOf.html +117 -0
  238. package/tests/pages/inheritance.html +76 -0
  239. package/tests/pages/integer.html +68 -0
  240. package/tests/pages/issues/_template.html +50 -0
  241. package/tests/pages/issues/issue-gh-812.html +110 -0
  242. package/tests/pages/issues/issue-gh-823-meta-schema.html +35 -0
  243. package/tests/pages/issues/issue-gh-848.html +81 -0
  244. package/tests/pages/meta_schema.json +705 -0
  245. package/tests/pages/number.html +89 -0
  246. package/tests/pages/object-no-additional-properties.html +65 -0
  247. package/tests/pages/object-no-duplicated-id.html +68 -0
  248. package/tests/pages/object-required-properties.html +236 -0
  249. package/tests/pages/object-with-dependencies-array.html +46 -0
  250. package/tests/pages/object-with-dependencies.html +60 -0
  251. package/tests/pages/object.html +79 -0
  252. package/tests/pages/oneof.html +103 -0
  253. package/tests/pages/option-no_default_values.html +58 -0
  254. package/tests/pages/programmatic-changes.html +120 -0
  255. package/tests/pages/read-only.html +105 -0
  256. package/tests/pages/select.html +41 -0
  257. package/tests/pages/stepper.html +59 -0
  258. package/tests/pages/string-ace-editor.html +52 -0
  259. package/tests/pages/string-cleave.html +46 -0
  260. package/tests/pages/string-custom-attributes.html +62 -0
  261. package/tests/pages/string-formats.html +52 -0
  262. package/tests/pages/string-formats2.html +57 -0
  263. package/tests/pages/string-jodit-editor.html +49 -0
  264. package/tests/pages/string-sceditor.html +62 -0
  265. package/tests/pages/table-move-events.html +56 -0
  266. package/tests/pages/table.html +46 -0
  267. package/tests/pages/tabs.html +131 -0
  268. package/tests/pages/themes.html +527 -0
  269. package/tests/pages/translate-property.html +247 -0
  270. package/tests/pages/urn.html +93 -0
  271. package/tests/pages/uuid.html +72 -0
  272. package/tests/pages/validation.html +99 -0
  273. package/tests/unit/.eslintrc +8 -0
  274. package/tests/unit/core.spec.js +309 -0
  275. package/tests/unit/defaults.spec.js +40 -0
  276. package/tests/unit/editor.spec.js +160 -0
  277. package/tests/unit/editors/array.spec.js +86 -0
  278. package/tests/unit/editors/object.spec.js +79 -0
  279. package/tests/unit/editors/table.spec.js +91 -0
  280. package/tests/unit/readme.md +35 -0
  281. package/tests/unit/schemaloader.spec.js +498 -0
  282. package/tests/unit/validator.spec.js +94 -0
  283. package/tests/unit/validators/ip-validator.spec.js +62 -0
@@ -0,0 +1,35 @@
1
+ exports.config = {
2
+ tests: './tests/codeceptjs/**/*_test.js',
3
+ timeout: 10000,
4
+ output: './e2e/output',
5
+ helpers: {
6
+ Puppeteer: {
7
+ browser: 'chrome',
8
+ url: 'localhost:9001/tests/pages/',
9
+ show: true,
10
+ disableScreenshots: false,
11
+ waitForNavigation: 'networkidle0',
12
+ waitForAction: 200,
13
+ restart: false,
14
+ chrome: {
15
+ args: ['--ignore-certificate-errors', '--no-sandbox']
16
+ }
17
+ },
18
+ customHelpers: {
19
+ require: './config/codeceptjs_helpers.js'
20
+ }
21
+ },
22
+ include: {
23
+ I: './tests/codeceptjs/steps_file.js'
24
+ },
25
+ bootstrap: null,
26
+ mocha: {
27
+ reporterOptions: {
28
+ reportDir: './e2e/reports',
29
+ inlineAssets: true,
30
+ reportPageTitle: 'E2E Test Reports',
31
+ reportTitle: 'E2E Test Reports'
32
+ }
33
+ },
34
+ name: 'codeceptjs-json-editor'
35
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "extends":"../.eslintrc",
3
+ "rules":
4
+ {
5
+ "no-undef":"off"
6
+ }
7
+ }
@@ -0,0 +1,139 @@
1
+ const assert = require('assert')
2
+ // eslint-disable-next-line camelcase
3
+ let Helper = codecept_helper
4
+
5
+ const sleep = async (msec) => {
6
+ return new Promise(resolve => setTimeout(resolve, msec))
7
+ }
8
+
9
+ class customHelpers extends Helper {
10
+ async donSeeDuplicatedIds () {
11
+ const helper = this.helpers['Puppeteer'] || this.helpers['WebDriver']
12
+ await helper.wait(1)
13
+ let donSeeDuplicatedIds = await helper.executeScript(() => {
14
+ let dontSeeDuplicated = true
15
+ let ids = []
16
+ const all = [].slice.call(document.querySelectorAll('*'))
17
+ all.forEach((el) => {
18
+ const id = el.getAttribute('id')
19
+ if (ids.includes(id)) {
20
+ dontSeeDuplicated = false
21
+ }
22
+ if (id) {
23
+ ids.push(id)
24
+ }
25
+ })
26
+ return dontSeeDuplicated
27
+ })
28
+ return assert.strictEqual(donSeeDuplicatedIds, true)
29
+ }
30
+
31
+ async pressKeys (string) {
32
+ const helper = this.helpers['Puppeteer'] || this.helpers['WebDriver']
33
+ try {
34
+ await helper.wait(1)
35
+ let digits = string.split('')
36
+ for (let i = 0; i < digits.length; i++) {
37
+ await helper.pressKey(digits[i])
38
+ }
39
+ } catch (err) {
40
+ console.log('CodeceptJs Custom Helper "pressKeys" Error:', err)
41
+ }
42
+ }
43
+
44
+ // Custom amCancellingPopups function, overriding original function.
45
+ // Required for tests to work with WebDriver, since "amCancellingPopups" is a Puppeteer command.
46
+ // returns existing amCancellingPopups function if exists
47
+ async amCancellingPopups () {
48
+ const helper = this.helpers['Puppeteer'] || this.helpers['WebDriver']
49
+ try {
50
+ if (typeof helper.amCancellingPopups === 'function') return helper.amCancellingPopups.call(arguments)
51
+ } catch (err) {
52
+ console.log('CodeceptJs Custom Helper "amCancellingPopups" Error:', err)
53
+ }
54
+ }
55
+
56
+ // Custom amAcceptingPopups function, overriding original function.
57
+ // Required for tests to work with WebDriver, since "amAcceptingPopups" is a Puppeteer command.
58
+ // returns existing amAcceptingPopups function if exists
59
+ async amAcceptingPopups () {
60
+ const helper = this.helpers['Puppeteer'] || this.helpers['WebDriver']
61
+ try {
62
+ if (typeof helper.amAcceptingPopups === 'function') return helper.amAcceptingPopups.call(arguments)
63
+ } catch (err) {
64
+ console.log('CodeceptJs Custom Helper "amAcceptingPopups" Error:', err)
65
+ }
66
+ }
67
+
68
+ // Custom seeCheckedAttribute function.
69
+ // Evaluates true if xpath is checked
70
+ async seeCheckedAttribute (xpath) {
71
+ const helper = this.helpers['Puppeteer'] || this.helpers['WebDriver']
72
+ let res = await helper.grabAttributeFrom(xpath, 'checked')
73
+ return assert.ok(res !== null && typeof res !== 'undefined' && res.toString().toLowerCase() === 'true', "\x1b[31mexpected element '\x1b[91m" + xpath + "\x1b[31m' to be checked")
74
+ }
75
+
76
+ // Custom dontSeeCheckedAttribute function.
77
+ // Evaluates true if xpath is not checked
78
+ async dontSeeCheckedAttribute (xpath) {
79
+ const helper = this.helpers['Puppeteer'] || this.helpers['WebDriver']
80
+ let res = await helper.grabAttributeFrom(xpath, 'checked')
81
+ return assert.ok(!(res !== null && typeof res !== 'undefined' && res.toString().toLowerCase() === 'true'), "\x1b[31mexpected element '\x1b[91m" + xpath + "\x1b[31m' NOT to be checked")
82
+ }
83
+
84
+ // Custom seeDisabledAttribute function.
85
+ // Evaluates true if xpath is disabled
86
+ async seeDisabledAttribute (xpath) {
87
+ const helper = this.helpers['Puppeteer'] || this.helpers['WebDriver']
88
+ let res = await helper.grabAttributeFrom(xpath, 'disabled')
89
+ return assert.ok(res !== null && typeof res !== 'undefined' && res.toString().toLowerCase() === 'true', "\x1b[31mexpected element '\x1b[91m" + xpath + "\x1b[31m' to be disabled")
90
+ }
91
+
92
+ // Custom dontSeeDisabledAttributet function.
93
+ // Evaluates true if xpath is not disabled
94
+ async dontSeeDisabledAttribute (xpath) {
95
+ const helper = this.helpers['Puppeteer'] || this.helpers['WebDriver']
96
+ let res = await helper.grabAttributeFrom(xpath, 'disabled')
97
+ return assert.ok(!(res !== null && typeof res !== 'undefined' && res.toString().toLowerCase() === 'true'), "\x1b[31mexpected element '\x1b[91m" + xpath + "\x1b[31m' NOT to be disabled")
98
+ }
99
+
100
+ // Custom seeReadOnlyAttribute function.
101
+ // Evaluates true if xpath is disabled
102
+ async seeReadOnlyAttribute (xpath) {
103
+ const helper = this.helpers['Puppeteer'] || this.helpers['WebDriver']
104
+ let res = await helper.grabAttributeFrom(xpath, 'readonly')
105
+ return assert.ok(res !== null && typeof res !== 'undefined' && res.toString().toLowerCase() === 'true', "\x1b[31mexpected element '\x1b[91m" + xpath + "\x1b[31m' to be readonly")
106
+ }
107
+
108
+ // Custom dontSeeReadOnlyAttributet function.
109
+ // Evaluates true if xpath is not disabled
110
+ async dontSeeReadOnlyAttribute (xpath) {
111
+ const helper = this.helpers['Puppeteer'] || this.helpers['WebDriver']
112
+ let res = await helper.grabAttributeFrom(xpath, 'readonly')
113
+ return assert.ok(!(res !== null && typeof res !== 'undefined' && res.toString().toLowerCase() === 'true'), "\x1b[31mexpected element '\x1b[91m" + xpath + "\x1b[31m' NOT to be readonly")
114
+ }
115
+
116
+ // Custom grabBooleanAttributeFrom function.
117
+ // returns boolean value
118
+ async grabBooleanAttributeFrom (xpath, attrib) {
119
+ const helper = this.helpers['Puppeteer'] || this.helpers['WebDriver']
120
+ try {
121
+ let res = await helper.grabAttributeFrom(xpath, attrib)
122
+ return res !== null && typeof res !== 'undefined' && res.toString().toLowerCase() === 'true'
123
+ } catch (err) {
124
+ console.log('CodeceptJs Custom Helper "grabBooleanAttributeFrom" Error:', err)
125
+ }
126
+ }
127
+
128
+ // Custom isTrue function.
129
+ // returns boolean value
130
+ async isTrue (val) {
131
+ try {
132
+ return val !== null && typeof val !== 'undefined' && val.toString().toLowerCase() === 'true'
133
+ } catch (err) {
134
+ console.log('CodeceptJs Custom Helper "isTrue" Error:', err)
135
+ }
136
+ }
137
+ }
138
+
139
+ module.exports = customHelpers
@@ -0,0 +1,10 @@
1
+ var path = require('path')
2
+
3
+ var _root = path.resolve(__dirname, '..')
4
+
5
+ function root (args) {
6
+ args = Array.prototype.slice.call(arguments, 0)
7
+ return path.join.apply(path, [_root].concat(args))
8
+ }
9
+
10
+ exports.root = root
@@ -0,0 +1,93 @@
1
+ const CssToJSON = require('../build/CssToJson')
2
+
3
+ /* eslint-disable no-undef */
4
+ // Karma configuration
5
+ const webpackConfig = {
6
+ devtool: 'inline-source-map',
7
+ plugins: [
8
+ new CssToJSON({
9
+ pattern: './src/**/*.css'
10
+ })
11
+ ]
12
+ }
13
+
14
+ module.exports = function (config) {
15
+ config.set({
16
+
17
+ // base path that will be used to resolve all patterns (eg. files, exclude)
18
+ basePath: '../',
19
+
20
+ // frameworks to use
21
+ frameworks: ['jasmine'],
22
+
23
+ // list of files / patterns to load in the browser
24
+ files: [
25
+ { pattern: './tests/unit/**/*.spec.js', watched: false }
26
+ ],
27
+
28
+ // preprocess matching files before serving them to the browser
29
+ // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
30
+ preprocessors: {
31
+ './src/core.js': ['webpack', 'sourcemap'], // Same as entrypoint specified in webpack.config.js
32
+ './tests/unit/**/*.spec.js': ['webpack', 'sourcemap']
33
+ },
34
+
35
+ // list of files / patterns to exclude
36
+ exclude: [
37
+ ],
38
+
39
+ webpack: webpackConfig,
40
+
41
+ webpackMiddleware: {
42
+ // webpack-dev-middleware configuration
43
+ // i. e.
44
+ stats: 'errors-only'
45
+ },
46
+
47
+ beforeMiddleware: [
48
+ 'webpackBlocker'
49
+ ],
50
+
51
+ // test results reporter to use
52
+ // possible values: 'dots', 'progress'
53
+ // available reporters: https://npmjs.org/browse/keyword/karma-reporter
54
+ reporters: ['progress', 'kjhtml'],
55
+
56
+ // web server port
57
+ port: 9876,
58
+
59
+ // enable / disable colors in the output (reporters and logs)
60
+ colors: true,
61
+
62
+ client: {
63
+ clearContext: false // leave Jasmine Spec Runner output visible in browser
64
+ },
65
+
66
+ // level of logging
67
+ // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
68
+ logLevel: config.LOG_INFO,
69
+
70
+ // enable / disable watching file and executing tests whenever any file changes
71
+ autoWatch: true,
72
+
73
+ // start these browsers
74
+ // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
75
+ browsers: ['ChromeHeadless', 'Chrome'],
76
+
77
+ customLaunchers: {
78
+ Chrome_with_debugging: {
79
+ base: 'Chrome',
80
+ flags: ['--remote-debugging-port=9222'],
81
+ debug: true
82
+ }
83
+ },
84
+
85
+ // Continuous Integration mode
86
+ // if true, Karma captures browsers, runs the tests and exits
87
+ singleRun: false,
88
+
89
+ // Concurrency level
90
+ // how many browser should be started simultaneous
91
+ concurrency: Infinity
92
+ })
93
+ }
@@ -0,0 +1,31 @@
1
+ # Config Readme
2
+
3
+ ## Webpack Configurations
4
+
5
+ The fairly standard Webpack setup would involve having three different Webpack config files derived from the same common config:
6
+ 1. Production - distribution
7
+ 2. Development - debugging etc
8
+ 3. Test - for unit testing
9
+
10
+ Development build output is set using the `devtool` entry in the config file. This provides a great deal of flexibility about type out of output (minified, non-minified) and whether or how source maps are generated (see https://webpack.js.org/guides/development/).
11
+
12
+
13
+ However we have two different use-cases for a development build:
14
+ 1. A non-minified and easily readable version for distribution
15
+ 2. Easy debugging using source maps via the webpack development server.
16
+
17
+ Usually both of these use-cases would be easily achieved with `devtool:"source-map"` but there is a [known bug](https://github.com/webpack/webpack/issues/5491) with Chrome Developer tools in this configuration. So for now we've had to produce a separate config for each use case.
18
+
19
+ As a result there are four separate Webpack configurations, each derived from webpack.common.js, with the following purposes
20
+
21
+ | Config File | Purpose | Related NPM scripts |
22
+ |-----|-----|-----|
23
+ | webpack.prod.js | Generates minified output to `/dist` root | `build.prod` - runs this build<br>`build` - runs both `prod` and `nonmin` builds
24
+ | webpack.nonmin.js | Generates non-minified output and sourcemap to `/dist/nonmin/` | `build.nonmin` - runs this build<br>`build` - runs both `prod` and `nonmin` builds<br>`debug.nonmin` - starts dev server for this config in watch mode. (No need to build first)<br>`watch` - starts build in watch mode |
25
+ | webpack.dev.js | Generates output and sourcemap (debuggable by both Chrome and Firefox) for dev server | `debug` - starts dev server for this config in watch mode. (No need to build first)
26
+ | karma.config.js | Contains tiny webpack config to provide script only build for Karma test runner | `test` - runs Karma scripts in Chrome Browser in watch mode<br>`test.headless` - runs Karma scripts once in headless mode
27
+
28
+
29
+
30
+
31
+
@@ -0,0 +1,75 @@
1
+ const webpack = require('webpack')
2
+ const helpers = require('./helpers')
3
+ const CssToJSON = require('../build/CssToJson')
4
+
5
+ const bannerText = `/**
6
+ * @name JSON Editor
7
+ * @description JSON Schema Based Editor
8
+ * This library is the continuation of jdorn's great work (see also https://github.com/jdorn/json-editor/issues/800)
9
+ * @version {{ VERSION }}
10
+ * @author Jeremy Dorn
11
+ * @see https://github.com/jdorn/json-editor/
12
+ * @see https://github.com/json-editor/json-editor
13
+ * @license MIT
14
+ * @example see README.md and docs/ for requirements, examples and usage info
15
+ */`
16
+ module.exports = {
17
+ entry: {
18
+ jsoneditor: './src/core.js'
19
+ },
20
+ resolve: {
21
+ extensions: ['.js']
22
+ },
23
+ module: {
24
+ rules: [
25
+ {
26
+ enforce: 'pre',
27
+ test: /\.js$/,
28
+ exclude: /node_modules/,
29
+ loader: 'eslint-loader'
30
+ },
31
+ {
32
+ test: /\.js|\.css.js$/,
33
+ exclude: /node_modules/,
34
+ use: [
35
+ {
36
+ loader: 'babel-loader',
37
+ options: {
38
+ presets: [
39
+ ['@babel/preset-env', {
40
+ useBuiltIns: 'usage',
41
+ corejs: 3,
42
+ debug: false
43
+ }]
44
+ ]
45
+ }
46
+ }
47
+ ]
48
+ },
49
+ {
50
+ test: /\.css$/,
51
+ exclude: /(node_modules)|(src\/themes)|(src\/editors)/,
52
+ use: ['style-loader', 'css-loader']
53
+ }
54
+ ]
55
+ },
56
+ plugins: [
57
+ new webpack.BannerPlugin(
58
+ bannerText.replace(
59
+ '{{ VERSION }}',
60
+ JSON.stringify(require('../package.json').version)
61
+ )
62
+ ),
63
+ new CssToJSON({
64
+ pattern: './src/**/*.css'
65
+ })
66
+ ],
67
+ performance: {
68
+ hints: false
69
+ },
70
+ devServer: {
71
+ contentBase: helpers.root('.'),
72
+ historyApiFallback: true,
73
+ port: 8080
74
+ }
75
+ }
@@ -0,0 +1,15 @@
1
+ /* eslint-disable no-undef */
2
+ const webpackMerge = require('webpack-merge')
3
+ const commonConfig = require('./webpack.common.js')
4
+ const helpers = require('./helpers')
5
+
6
+ module.exports = webpackMerge(commonConfig, {
7
+ mode: 'development',
8
+ devtool: 'cheap-module-eval-source-map',
9
+ output: {
10
+ path: helpers.root('dist/dev'),
11
+ publicPath: '/dist/',
12
+ filename: '[name].js',
13
+ libraryTarget: 'umd'
14
+ }
15
+ })
@@ -0,0 +1,19 @@
1
+ const webpackMerge = require('webpack-merge')
2
+ const { CleanWebpackPlugin } = require('clean-webpack-plugin')
3
+ const commonConfig = require('./webpack.common.js')
4
+ const helpers = require('./helpers')
5
+
6
+ // See https://webpack.js.org/guides/development/
7
+ module.exports = (env) => webpackMerge(commonConfig, {
8
+ mode: 'development',
9
+ devtool: '@source-map',
10
+ output: {
11
+ path: env && env.travis === true ? helpers.root('dist') : helpers.root('dist/nonmin'),
12
+ publicPath: '/dist/',
13
+ filename: '[name].js',
14
+ libraryTarget: 'umd'
15
+ },
16
+ plugins: [
17
+ new CleanWebpackPlugin() // Cleans directory before building
18
+ ]
19
+ })
@@ -0,0 +1,25 @@
1
+ const webpack = require('webpack')
2
+ const webpackMerge = require('webpack-merge')
3
+ const RemoveStrictPlugin = require('remove-strict-webpack-plugin')
4
+ const commonConfig = require('./webpack.common.js')
5
+ const helpers = require('./helpers')
6
+
7
+ module.exports = () => {
8
+ return webpackMerge(commonConfig, {
9
+ mode: 'production',
10
+ output: {
11
+ path: helpers.root('dist'),
12
+ publicPath: '/dist/',
13
+ filename: '[name].js',
14
+ libraryTarget: 'umd'
15
+ },
16
+ optimization: {
17
+ minimize: true
18
+ },
19
+ plugins: [
20
+ new RemoveStrictPlugin(), // I have put this in to avoid IE throwing error Assignment to read-only properties is not allowed in strict mode
21
+ // This doesn't seem to actually be minimising the CSS!
22
+ new webpack.NoEmitOnErrorsPlugin()
23
+ ]
24
+ })
25
+ }