@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.
- package/.env-dist +2 -0
- package/.eslintrc +7 -0
- package/.gitattributes +1 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +9 -0
- package/.github/issue_template +25 -0
- package/.github/workflows/build.yml +58 -0
- package/.travis.yml +70 -0
- package/CHANGELOG.md +915 -0
- package/CONTRIBUTING.md +92 -0
- package/LICENSE +20 -0
- package/Makefile +26 -0
- package/README.md +1646 -0
- package/README_ADDON.md +573 -0
- package/UPGRADING.md +46 -0
- package/build/CssToJson.js +55 -0
- package/codecept.conf.js +35 -0
- package/config/.eslintrc +7 -0
- package/config/codeceptjs_helpers.js +139 -0
- package/config/helpers.js +10 -0
- package/config/karma.conf.js +93 -0
- package/config/readme.md +31 -0
- package/config/webpack.common.js +75 -0
- package/config/webpack.dev.js +15 -0
- package/config/webpack.nonmin.js +19 -0
- package/config/webpack.prod.js +25 -0
- package/dist/jsoneditor.js +14 -0
- package/dist/nonmin/jsoneditor.js +29097 -0
- package/dist/nonmin/jsoneditor.js.map +1 -0
- package/docs/ace_editor.html +56 -0
- package/docs/advanced.html +136 -0
- package/docs/basic.html +63 -0
- package/docs/basic_person.json +26 -0
- package/docs/choices.html +86 -0
- package/docs/cleave.html +132 -0
- package/docs/colorpicker.html +194 -0
- package/docs/css_integration.html +135 -0
- package/docs/datetime.html +305 -0
- package/docs/describedby.html +161 -0
- package/docs/enumsource.html +67 -0
- package/docs/images/categoriesDemo.png +0 -0
- package/docs/images/inheritance_tree.png +0 -0
- package/docs/images/jsoneditor.png +0 -0
- package/docs/imask.html +192 -0
- package/docs/index.html +579 -0
- package/docs/materialize_css.html +164 -0
- package/docs/meta_schema.json +705 -0
- package/docs/multiple_upload_base64.html +65 -0
- package/docs/person.json +73 -0
- package/docs/polyfills/assign.js +29 -0
- package/docs/radio.html +156 -0
- package/docs/recursive.html +170 -0
- package/docs/select2.html +99 -0
- package/docs/selectize.html +100 -0
- package/docs/signature.html +42 -0
- package/docs/starrating.html +137 -0
- package/docs/upload.html +131 -0
- package/docs/uuid.html +70 -0
- package/docs/wysiwyg.html +56 -0
- package/jasmine.json +11 -0
- package/json-editor-json-editor-2.5.3-wb13.tgz +0 -0
- package/package.json +100 -0
- package/release-notes.md +88 -0
- package/src/core.js +412 -0
- package/src/defaults.js +402 -0
- package/src/editor.js +707 -0
- package/src/editors/ace.js +89 -0
- package/src/editors/array/choices.js +103 -0
- package/src/editors/array/select2.js +110 -0
- package/src/editors/array/selectize.js +103 -0
- package/src/editors/array.css +9 -0
- package/src/editors/array.css.js +3 -0
- package/src/editors/array.js +818 -0
- package/src/editors/autocomplete.js +58 -0
- package/src/editors/base64.js +157 -0
- package/src/editors/button.js +97 -0
- package/src/editors/checkbox.js +95 -0
- package/src/editors/choices.css +3 -0
- package/src/editors/choices.css.js +3 -0
- package/src/editors/choices.js +69 -0
- package/src/editors/colorpicker.js +103 -0
- package/src/editors/datetime.js +141 -0
- package/src/editors/describedby.js +188 -0
- package/src/editors/enum.js +136 -0
- package/src/editors/hidden.js +127 -0
- package/src/editors/index.js +81 -0
- package/src/editors/info.js +20 -0
- package/src/editors/integer.js +19 -0
- package/src/editors/ip.js +36 -0
- package/src/editors/jodit.js +64 -0
- package/src/editors/multiple.js +409 -0
- package/src/editors/multiselect.js +218 -0
- package/src/editors/null.js +18 -0
- package/src/editors/number.js +51 -0
- package/src/editors/object.css +41 -0
- package/src/editors/object.css.js +3 -0
- package/src/editors/object.js +1290 -0
- package/src/editors/radio.js +111 -0
- package/src/editors/sceditor.js +72 -0
- package/src/editors/select.js +370 -0
- package/src/editors/select2.js +110 -0
- package/src/editors/selectize.js +112 -0
- package/src/editors/signature.js +113 -0
- package/src/editors/simplemde.js +100 -0
- package/src/editors/starrating.css +52 -0
- package/src/editors/starrating.css.js +3 -0
- package/src/editors/starrating.js +135 -0
- package/src/editors/stepper.js +27 -0
- package/src/editors/string.js +372 -0
- package/src/editors/table.js +516 -0
- package/src/editors/upload.js +321 -0
- package/src/editors/uuid.js +56 -0
- package/src/iconlib.js +24 -0
- package/src/iconlibs/bootstrap2.js +28 -0
- package/src/iconlibs/bootstrap3.js +28 -0
- package/src/iconlibs/fontawesome3.js +28 -0
- package/src/iconlibs/fontawesome4.js +28 -0
- package/src/iconlibs/fontawesome5.js +28 -0
- package/src/iconlibs/foundation2.js +24 -0
- package/src/iconlibs/foundation3.js +28 -0
- package/src/iconlibs/index.js +25 -0
- package/src/iconlibs/jqueryui.js +28 -0
- package/src/iconlibs/materialicons.js +49 -0
- package/src/iconlibs/openiconic.js +28 -0
- package/src/iconlibs/spectre.js +28 -0
- package/src/resolvers.js +128 -0
- package/src/schemaloader.js +408 -0
- package/src/style.css +150 -0
- package/src/style.css.js +3 -0
- package/src/templates/default.js +52 -0
- package/src/templates/ejs.js +13 -0
- package/src/templates/handlebars.js +1 -0
- package/src/templates/hogan.js +10 -0
- package/src/templates/index.js +21 -0
- package/src/templates/lodash.js +9 -0
- package/src/templates/markup.js +9 -0
- package/src/templates/mustache.js +9 -0
- package/src/templates/swig.js +1 -0
- package/src/templates/underscore.js +9 -0
- package/src/theme.js +659 -0
- package/src/themes/barebones.css +35 -0
- package/src/themes/barebones.css.js +3 -0
- package/src/themes/barebones.js +28 -0
- package/src/themes/bootstrap2.js +319 -0
- package/src/themes/bootstrap3.css +0 -0
- package/src/themes/bootstrap3.css.js +3 -0
- package/src/themes/bootstrap3.js +315 -0
- package/src/themes/bootstrap4.css +89 -0
- package/src/themes/bootstrap4.css.js +3 -0
- package/src/themes/bootstrap4.js +690 -0
- package/src/themes/bootstrap5.css.js +3 -0
- package/src/themes/foundation.js +569 -0
- package/src/themes/html.css +60 -0
- package/src/themes/html.css.js +3 -0
- package/src/themes/html.js +71 -0
- package/src/themes/index.js +28 -0
- package/src/themes/jqueryui.js +198 -0
- package/src/themes/materialize.js +426 -0
- package/src/themes/spectre.css +208 -0
- package/src/themes/spectre.css.js +3 -0
- package/src/themes/spectre.js +406 -0
- package/src/themes/tailwind.css +249 -0
- package/src/themes/tailwind.css.js +3 -0
- package/src/themes/tailwind.js +443 -0
- package/src/utilities.js +138 -0
- package/src/validator.js +877 -0
- package/src/validators/ip-validator.js +51 -0
- package/tests/Dockerfile +3 -0
- package/tests/README.md +48 -0
- package/tests/codeceptjs/codecept.json +42 -0
- package/tests/codeceptjs/constrains/if-then-else_test.js +143 -0
- package/tests/codeceptjs/core_test.js +217 -0
- package/tests/codeceptjs/editors/advanced_test.js +13 -0
- package/tests/codeceptjs/editors/array_any_of_test.js +50 -0
- package/tests/codeceptjs/editors/array_test.js +900 -0
- package/tests/codeceptjs/editors/button_test.js +35 -0
- package/tests/codeceptjs/editors/checkbox_test.js +21 -0
- package/tests/codeceptjs/editors/colorpicker_test.js +27 -0
- package/tests/codeceptjs/editors/datetime_test.js +33 -0
- package/tests/codeceptjs/editors/inheritance_test.js +11 -0
- package/tests/codeceptjs/editors/integer_test.js +84 -0
- package/tests/codeceptjs/editors/issues/issue-gh-812_test.js +32 -0
- package/tests/codeceptjs/editors/jodit_test.js +24 -0
- package/tests/codeceptjs/editors/multiselect_test.js +8 -0
- package/tests/codeceptjs/editors/number_test.js +82 -0
- package/tests/codeceptjs/editors/object_test.js +204 -0
- package/tests/codeceptjs/editors/option-no_default_values_test.js +42 -0
- package/tests/codeceptjs/editors/programmatic-changes_test.js +20 -0
- package/tests/codeceptjs/editors/radio_test.js +10 -0
- package/tests/codeceptjs/editors/rating_test.js +13 -0
- package/tests/codeceptjs/editors/select_test.js +22 -0
- package/tests/codeceptjs/editors/stepper_test.js +27 -0
- package/tests/codeceptjs/editors/string_test.js +118 -0
- package/tests/codeceptjs/editors/table-confirm-delete_test.js +67 -0
- package/tests/codeceptjs/editors/tabs_test.js +14 -0
- package/tests/codeceptjs/editors/uuid_test.js +21 -0
- package/tests/codeceptjs/editors/validation_test.js +14 -0
- package/tests/codeceptjs/meta-schema_test.js +17 -0
- package/tests/codeceptjs/schemaloader_test.js +13 -0
- package/tests/codeceptjs/steps.d.ts +13 -0
- package/tests/codeceptjs/steps_file.js +12 -0
- package/tests/codeceptjs/themes_test.js +519 -0
- package/tests/docker-compose.yml +34 -0
- package/tests/fixtures/basic_person.json +26 -0
- package/tests/fixtures/nested_object.json +26 -0
- package/tests/fixtures/person.json +55 -0
- package/tests/fixtures/recursive.json +8 -0
- package/tests/fixtures/some_types.json +32 -0
- package/tests/fixtures/string.json +3 -0
- package/tests/fixtures/validation.json +1140 -0
- package/tests/pages/_demo.html +475 -0
- package/tests/pages/advanced.html +137 -0
- package/tests/pages/anyof.html +80 -0
- package/tests/pages/array-anyof.html +142 -0
- package/tests/pages/array-checkboxes.html +41 -0
- package/tests/pages/array-choices.html +45 -0
- package/tests/pages/array-integers.html +37 -0
- package/tests/pages/array-move-events.html +61 -0
- package/tests/pages/array-multiselects.html +42 -0
- package/tests/pages/array-nested-arrays.html +40 -0
- package/tests/pages/array-numbers.html +37 -0
- package/tests/pages/array-objects.html +42 -0
- package/tests/pages/array-ratings.html +40 -0
- package/tests/pages/array-selectize.html +51 -0
- package/tests/pages/array-selects.html +36 -0
- package/tests/pages/array-strings.html +36 -0
- package/tests/pages/array.html +42 -0
- package/tests/pages/assets/pages.css +130 -0
- package/tests/pages/button-callbacks.html +77 -0
- package/tests/pages/checkbox-labels.html +114 -0
- package/tests/pages/colorpicker-no-3rd-party.html +43 -0
- package/tests/pages/colorpicker-use-vanilla-picker.html +50 -0
- package/tests/pages/core.html +118 -0
- package/tests/pages/datetime.html +76 -0
- package/tests/pages/form-name.html +108 -0
- package/tests/pages/grid-strict.html +311 -0
- package/tests/pages/grid.html +284 -0
- package/tests/pages/if-then-else-allOf.html +117 -0
- package/tests/pages/inheritance.html +76 -0
- package/tests/pages/integer.html +68 -0
- package/tests/pages/issues/_template.html +50 -0
- package/tests/pages/issues/issue-gh-812.html +110 -0
- package/tests/pages/issues/issue-gh-823-meta-schema.html +35 -0
- package/tests/pages/issues/issue-gh-848.html +81 -0
- package/tests/pages/meta_schema.json +705 -0
- package/tests/pages/number.html +89 -0
- package/tests/pages/object-no-additional-properties.html +65 -0
- package/tests/pages/object-no-duplicated-id.html +68 -0
- package/tests/pages/object-required-properties.html +236 -0
- package/tests/pages/object-with-dependencies-array.html +46 -0
- package/tests/pages/object-with-dependencies.html +60 -0
- package/tests/pages/object.html +79 -0
- package/tests/pages/oneof.html +103 -0
- package/tests/pages/option-no_default_values.html +58 -0
- package/tests/pages/programmatic-changes.html +120 -0
- package/tests/pages/read-only.html +105 -0
- package/tests/pages/select.html +41 -0
- package/tests/pages/stepper.html +59 -0
- package/tests/pages/string-ace-editor.html +52 -0
- package/tests/pages/string-cleave.html +46 -0
- package/tests/pages/string-custom-attributes.html +62 -0
- package/tests/pages/string-formats.html +52 -0
- package/tests/pages/string-formats2.html +57 -0
- package/tests/pages/string-jodit-editor.html +49 -0
- package/tests/pages/string-sceditor.html +62 -0
- package/tests/pages/table-move-events.html +56 -0
- package/tests/pages/table.html +46 -0
- package/tests/pages/tabs.html +131 -0
- package/tests/pages/themes.html +527 -0
- package/tests/pages/translate-property.html +247 -0
- package/tests/pages/urn.html +93 -0
- package/tests/pages/uuid.html +72 -0
- package/tests/pages/validation.html +99 -0
- package/tests/unit/.eslintrc +8 -0
- package/tests/unit/core.spec.js +309 -0
- package/tests/unit/defaults.spec.js +40 -0
- package/tests/unit/editor.spec.js +160 -0
- package/tests/unit/editors/array.spec.js +86 -0
- package/tests/unit/editors/object.spec.js +79 -0
- package/tests/unit/editors/table.spec.js +91 -0
- package/tests/unit/readme.md +35 -0
- package/tests/unit/schemaloader.spec.js +498 -0
- package/tests/unit/validator.spec.js +94 -0
- package/tests/unit/validators/ip-validator.spec.js +62 -0
package/codecept.conf.js
ADDED
|
@@ -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
|
+
}
|
package/config/.eslintrc
ADDED
|
@@ -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,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
|
+
}
|
package/config/readme.md
ADDED
|
@@ -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
|
+
}
|