dobo 2.38.0 → 2.39.1
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/.bootorder +0 -0
- package/.github/FUNDING.yml +0 -0
- package/.github/workflows/repo-lockdown.yml +0 -0
- package/.jsdoc.conf.json +0 -0
- package/LICENSE +0 -0
- package/README.md +0 -0
- package/docs/Dobo.html +0 -0
- package/docs/DoboAction.html +0 -0
- package/docs/DoboAdapter.html +0 -0
- package/docs/DoboConnection.html +0 -0
- package/docs/DoboFeature.html +0 -0
- package/docs/DoboModel.html +0 -0
- package/docs/data/search.json +0 -0
- package/docs/extend_bajo_hook-docs.js.html +0 -0
- package/docs/external-Tools.html +0 -0
- package/docs/fonts/Inconsolata-Regular.ttf +0 -0
- package/docs/fonts/OpenSans-Regular.ttf +0 -0
- package/docs/fonts/WorkSans-Bold.ttf +0 -0
- package/docs/global.html +0 -0
- package/docs/index.html +0 -0
- package/docs/index.js.html +0 -0
- package/docs/lib_factory_action.js.html +0 -0
- package/docs/lib_factory_adapter.js.html +0 -0
- package/docs/lib_factory_connection.js.html +0 -0
- package/docs/lib_factory_feature.js.html +0 -0
- package/docs/lib_factory_model.js.html +0 -0
- package/docs/lib_factory_model_build.js.html +0 -0
- package/docs/lib_factory_model_clear-record.js.html +0 -0
- package/docs/lib_factory_model_count-record.js.html +0 -0
- package/docs/lib_factory_model_create-record.js.html +0 -0
- package/docs/lib_factory_model_drop.js.html +0 -0
- package/docs/lib_factory_model_exists.js.html +0 -0
- package/docs/lib_factory_model_find-all-record.js.html +0 -0
- package/docs/lib_factory_model_find-one-record.js.html +0 -0
- package/docs/lib_factory_model_find-record.js.html +0 -0
- package/docs/lib_factory_model_get-record.js.html +0 -0
- package/docs/lib_factory_model_helper.js.html +0 -0
- package/docs/lib_factory_model_remove-record.js.html +0 -0
- package/docs/lib_factory_model_sanitize-body.js.html +0 -0
- package/docs/lib_factory_model_sanitize-fixture.js.html +0 -0
- package/docs/lib_factory_model_sanitize-record.js.html +0 -0
- package/docs/lib_factory_model_update-record.js.html +0 -0
- package/docs/lib_factory_model_upsert-record.js.html +0 -0
- package/docs/lib_factory_model_validate.js.html +0 -0
- package/docs/lib_helper.js.html +0 -0
- package/docs/module-Helper.html +0 -0
- package/docs/module-Helper_Model.html +0 -0
- package/docs/module-Hook.html +0 -0
- package/docs/scripts/core.js +0 -0
- package/docs/scripts/core.min.js +0 -0
- package/docs/scripts/resize.js +0 -0
- package/docs/scripts/search.js +0 -0
- package/docs/scripts/search.min.js +5 -5
- package/docs/scripts/third-party/Apache-License-2.0.txt +0 -0
- package/docs/scripts/third-party/fuse.js +0 -0
- package/docs/scripts/third-party/hljs-line-num-original.js +0 -0
- package/docs/scripts/third-party/hljs-line-num.js +0 -0
- package/docs/scripts/third-party/hljs-original.js +0 -0
- package/docs/scripts/third-party/hljs.js +0 -0
- package/docs/scripts/third-party/popper.js +0 -0
- package/docs/scripts/third-party/tippy.js +0 -0
- package/docs/scripts/third-party/tocbot.js +0 -0
- package/docs/scripts/third-party/tocbot.min.js +0 -0
- package/docs/static/bitcoin.jpeg +0 -0
- package/docs/static/home.md +0 -0
- package/docs/static/logo-ecosystem.png +0 -0
- package/docs/static/logo.png +0 -0
- package/docs/styles/clean-jsdoc-theme-base.css +0 -0
- package/docs/styles/clean-jsdoc-theme-dark.css +0 -0
- package/docs/styles/clean-jsdoc-theme-light.css +0 -0
- package/docs/styles/clean-jsdoc-theme-scrollbar.css +0 -0
- package/docs/styles/clean-jsdoc-theme-without-scrollbar.min.css +0 -0
- package/docs/styles/clean-jsdoc-theme.min.css +0 -0
- package/extend/bajo/hook.js +236 -236
- package/extend/bajo/intl/en-US.json +0 -0
- package/extend/bajo/intl/id.json +0 -0
- package/extend/bajoCli/applet/aggregate.js +0 -0
- package/extend/bajoCli/applet/clear-record.js +0 -0
- package/extend/bajoCli/applet/connection.js +0 -0
- package/extend/bajoCli/applet/count-record.js +0 -0
- package/extend/bajoCli/applet/create-record.js +0 -0
- package/extend/bajoCli/applet/find-record.js +0 -0
- package/extend/bajoCli/applet/get-record.js +0 -0
- package/extend/bajoCli/applet/histogram.js +0 -0
- package/extend/bajoCli/applet/lib/post-process.js +0 -0
- package/extend/bajoCli/applet/model.js +0 -0
- package/extend/bajoCli/applet/rebuild-model.js +0 -0
- package/extend/bajoCli/applet/remove-record.js +0 -0
- package/extend/bajoCli/applet/update-record.js +0 -0
- package/extend/bajoCli/applet.js +0 -0
- package/extend/dobo/adapter/memory.js +175 -175
- package/extend/dobo/feature/created-at.js +0 -0
- package/extend/dobo/feature/dt.js +0 -0
- package/extend/dobo/feature/image.js +0 -0
- package/extend/dobo/feature/immutable.js +0 -0
- package/extend/dobo/feature/removed-at.js +0 -0
- package/extend/dobo/feature/unique.js +0 -0
- package/extend/dobo/feature/updated-at.js +0 -0
- package/extend/waibuMpa/route/attachment/@model/@id/@field/@file.js +0 -0
- package/extend/waibuStatic/virtual.json +0 -0
- package/index.js +0 -0
- package/lib/factory/action.js +287 -287
- package/lib/factory/adapter.js +1055 -1055
- package/lib/factory/connection.js +109 -109
- package/lib/factory/feature.js +52 -52
- package/lib/factory/model/aggregate.js +23 -23
- package/lib/factory/model/build.js +25 -25
- package/lib/factory/model/bulk-create-record.js +36 -36
- package/lib/factory/model/clear-record.js +30 -30
- package/lib/factory/model/count-record.js +42 -42
- package/lib/factory/model/create-attachment.js +36 -36
- package/lib/factory/model/create-record.js +49 -49
- package/lib/factory/model/drop.js +26 -26
- package/lib/factory/model/exists.js +26 -26
- package/lib/factory/model/find-all-record.js +112 -112
- package/lib/factory/model/find-attachment.js +28 -28
- package/lib/factory/model/find-one-record.js +38 -38
- package/lib/factory/model/find-record.js +82 -82
- package/lib/factory/model/get-attachment.js +15 -15
- package/lib/factory/model/get-record.js +52 -52
- package/lib/factory/model/helper.js +575 -576
- package/lib/factory/model/histogram.js +23 -23
- package/lib/factory/model/list-attachment.js +40 -40
- package/lib/factory/model/load-fixtures.js +63 -63
- package/lib/factory/model/remove-attachment.js +24 -24
- package/lib/factory/model/remove-record.js +44 -44
- package/lib/factory/model/sanitize-body.js +57 -57
- package/lib/factory/model/sanitize-fixture.js +56 -56
- package/lib/factory/model/sanitize-record.js +80 -80
- package/lib/factory/model/transaction.js +15 -15
- package/lib/factory/model/update-attachment.js +9 -9
- package/lib/factory/model/update-record.js +58 -58
- package/lib/factory/model/upsert-record.js +71 -71
- package/lib/factory/model/validate.js +0 -0
- package/lib/factory/model.js +503 -503
- package/lib/helper.js +463 -463
- package/package.json +1 -1
- package/test/e2e/_run.js +12 -12
- package/test/e2e/e2e-factory-process.test.js +25 -25
- package/test/e2e/e2e-model-adapter-process.test.js +52 -52
- package/test/integration/aspect-01-start-connections.test.js +33 -33
- package/test/integration/aspect-02-query-regex.test.js +34 -34
- package/test/integration/aspect-03-model-adapter-flow.test.js +88 -88
- package/test/unit/_stub.js +244 -244
- package/test/unit/dobo-action.test.js +58 -58
- package/test/unit/dobo-connection.test.js +37 -37
- package/test/unit/dobo-core.test.js +136 -136
- package/test/unit/dobo-feature.test.js +25 -25
- package/test/unit/dobo-model.test.js +115 -115
- package/test/unit/helper-sanitize-all.test.js +40 -40
- package/test/unit/helper-sanitize-ref.test.js +64 -64
- package/wiki/APPLETS.md +0 -0
- package/wiki/CHANGES.md +477 -469
- package/wiki/CONFIG.md +0 -0
- package/wiki/CONTRIBUTING.md +0 -0
- package/wiki/DEV-GUIDE.md +0 -0
- package/wiki/ECOSYSTEM.md +0 -0
- package/wiki/GETTING-STARTED.md +0 -0
- package/wiki/QUERY-LANGUAGE.md +0 -0
- package/wiki/USER-GUIDE.md +0 -0
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
/* global describe, it, beforeEach */
|
|
2
|
-
|
|
3
|
-
import { expect } from 'chai'
|
|
4
|
-
import factory from '../../index.js'
|
|
5
|
-
import { sanitizeAll } from '../../lib/helper.js'
|
|
6
|
-
import { createAppStub } from './_stub.js'
|
|
7
|
-
|
|
8
|
-
describe('helper sanitizeAll (unit)', () => {
|
|
9
|
-
let app
|
|
10
|
-
let dobo
|
|
11
|
-
|
|
12
|
-
beforeEach(async () => {
|
|
13
|
-
app = createAppStub('/tmp/dobo-helper-all')
|
|
14
|
-
const Dobo = await factory.call({ app }, 'dobo')
|
|
15
|
-
dobo = new Dobo()
|
|
16
|
-
app.dobo = dobo
|
|
17
|
-
dobo.fatal = (msg, ...args) => { throw new Error(`${msg}:${args.join(',')}`) }
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
it('normalizes properties, indexes, sortables and hidden fields', async () => {
|
|
21
|
-
const schema = {
|
|
22
|
-
name: 'Order',
|
|
23
|
-
properties: [
|
|
24
|
-
{ name: 'id', type: 'string', index: 'primary' },
|
|
25
|
-
{ name: 'name', type: 'string', minLength: '0', maxLength: '20' },
|
|
26
|
-
{ name: 'amount', type: 'double' }
|
|
27
|
-
],
|
|
28
|
-
indexes: [{ name: 'idx_name', type: 'index', fields: ['name'] }],
|
|
29
|
-
hidden: ['name', 'ghost']
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
await sanitizeAll.call(dobo, schema)
|
|
33
|
-
|
|
34
|
-
expect(schema.sortables).to.include('name')
|
|
35
|
-
expect(schema.hidden).to.deep.equal(['name'])
|
|
36
|
-
const nameProp = schema.properties.find(p => p.name === 'name')
|
|
37
|
-
expect(nameProp.maxLength).to.equal(20)
|
|
38
|
-
expect(nameProp.minLength).to.equal(undefined)
|
|
39
|
-
})
|
|
40
|
-
})
|
|
1
|
+
/* global describe, it, beforeEach */
|
|
2
|
+
|
|
3
|
+
import { expect } from 'chai'
|
|
4
|
+
import factory from '../../index.js'
|
|
5
|
+
import { sanitizeAll } from '../../lib/helper.js'
|
|
6
|
+
import { createAppStub } from './_stub.js'
|
|
7
|
+
|
|
8
|
+
describe('helper sanitizeAll (unit)', () => {
|
|
9
|
+
let app
|
|
10
|
+
let dobo
|
|
11
|
+
|
|
12
|
+
beforeEach(async () => {
|
|
13
|
+
app = createAppStub('/tmp/dobo-helper-all')
|
|
14
|
+
const Dobo = await factory.call({ app }, 'dobo')
|
|
15
|
+
dobo = new Dobo()
|
|
16
|
+
app.dobo = dobo
|
|
17
|
+
dobo.fatal = (msg, ...args) => { throw new Error(`${msg}:${args.join(',')}`) }
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
it('normalizes properties, indexes, sortables and hidden fields', async () => {
|
|
21
|
+
const schema = {
|
|
22
|
+
name: 'Order',
|
|
23
|
+
properties: [
|
|
24
|
+
{ name: 'id', type: 'string', index: 'primary' },
|
|
25
|
+
{ name: 'name', type: 'string', minLength: '0', maxLength: '20' },
|
|
26
|
+
{ name: 'amount', type: 'double' }
|
|
27
|
+
],
|
|
28
|
+
indexes: [{ name: 'idx_name', type: 'index', fields: ['name'] }],
|
|
29
|
+
hidden: ['name', 'ghost']
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
await sanitizeAll.call(dobo, schema)
|
|
33
|
+
|
|
34
|
+
expect(schema.sortables).to.include('name')
|
|
35
|
+
expect(schema.hidden).to.deep.equal(['name'])
|
|
36
|
+
const nameProp = schema.properties.find(p => p.name === 'name')
|
|
37
|
+
expect(nameProp.maxLength).to.equal(20)
|
|
38
|
+
expect(nameProp.minLength).to.equal(undefined)
|
|
39
|
+
})
|
|
40
|
+
})
|
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
/* global describe, it, beforeEach */
|
|
2
|
-
|
|
3
|
-
import { expect } from 'chai'
|
|
4
|
-
import factory from '../../index.js'
|
|
5
|
-
import { sanitizeRef } from '../../lib/helper.js'
|
|
6
|
-
import { createAppStub } from './_stub.js'
|
|
7
|
-
|
|
8
|
-
describe('helper sanitizeRef (unit)', () => {
|
|
9
|
-
let app
|
|
10
|
-
let dobo
|
|
11
|
-
|
|
12
|
-
beforeEach(async () => {
|
|
13
|
-
app = createAppStub('/tmp/dobo-helper-ref')
|
|
14
|
-
const Dobo = await factory.call({ app }, 'dobo')
|
|
15
|
-
dobo = new Dobo()
|
|
16
|
-
app.dobo = dobo
|
|
17
|
-
dobo.fatal = (msg, ...args) => { throw new Error(`${msg}:${args.join(',')}`) }
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
it('normalizes reference fields and filters unknown refs', async () => {
|
|
21
|
-
const user = {
|
|
22
|
-
name: 'User',
|
|
23
|
-
properties: [{ name: 'id' }, { name: 'name' }]
|
|
24
|
-
}
|
|
25
|
-
const order = {
|
|
26
|
-
name: 'Order',
|
|
27
|
-
properties: [
|
|
28
|
-
{
|
|
29
|
-
name: 'userId',
|
|
30
|
-
ref: {
|
|
31
|
-
user: { model: 'User', field: 'id', fields: ['name'] },
|
|
32
|
-
missing: { model: 'Unknown', field: 'id' }
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
]
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
await sanitizeRef.call(dobo, order, [user, order])
|
|
39
|
-
|
|
40
|
-
expect(order.properties[0].ref.user.type).to.equal('1:1')
|
|
41
|
-
expect(order.properties[0].ref.user.searchField).to.equal('id')
|
|
42
|
-
expect(order.properties[0].ref.user.labelField).to.equal('id')
|
|
43
|
-
expect(order.properties[0].ref.user.fields).to.include('id')
|
|
44
|
-
expect(order.properties[0].ref.missing).to.equal(undefined)
|
|
45
|
-
})
|
|
46
|
-
|
|
47
|
-
it('throws when duplicate ref keys exist across properties', async () => {
|
|
48
|
-
const schema = {
|
|
49
|
-
name: 'Order',
|
|
50
|
-
properties: [
|
|
51
|
-
{ name: 'a', ref: { rel: { model: 'User' } } },
|
|
52
|
-
{ name: 'b', ref: { rel: { model: 'User' } } }
|
|
53
|
-
]
|
|
54
|
-
}
|
|
55
|
-
const user = { name: 'User', properties: [{ name: 'id' }] }
|
|
56
|
-
|
|
57
|
-
let err
|
|
58
|
-
try {
|
|
59
|
-
await sanitizeRef.call(dobo, schema, [schema, user])
|
|
60
|
-
} catch (e) { err = e }
|
|
61
|
-
expect(err).to.be.instanceOf(Error)
|
|
62
|
-
expect(err.message).to.include('duplicateRefKeys')
|
|
63
|
-
})
|
|
64
|
-
})
|
|
1
|
+
/* global describe, it, beforeEach */
|
|
2
|
+
|
|
3
|
+
import { expect } from 'chai'
|
|
4
|
+
import factory from '../../index.js'
|
|
5
|
+
import { sanitizeRef } from '../../lib/helper.js'
|
|
6
|
+
import { createAppStub } from './_stub.js'
|
|
7
|
+
|
|
8
|
+
describe('helper sanitizeRef (unit)', () => {
|
|
9
|
+
let app
|
|
10
|
+
let dobo
|
|
11
|
+
|
|
12
|
+
beforeEach(async () => {
|
|
13
|
+
app = createAppStub('/tmp/dobo-helper-ref')
|
|
14
|
+
const Dobo = await factory.call({ app }, 'dobo')
|
|
15
|
+
dobo = new Dobo()
|
|
16
|
+
app.dobo = dobo
|
|
17
|
+
dobo.fatal = (msg, ...args) => { throw new Error(`${msg}:${args.join(',')}`) }
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
it('normalizes reference fields and filters unknown refs', async () => {
|
|
21
|
+
const user = {
|
|
22
|
+
name: 'User',
|
|
23
|
+
properties: [{ name: 'id' }, { name: 'name' }]
|
|
24
|
+
}
|
|
25
|
+
const order = {
|
|
26
|
+
name: 'Order',
|
|
27
|
+
properties: [
|
|
28
|
+
{
|
|
29
|
+
name: 'userId',
|
|
30
|
+
ref: {
|
|
31
|
+
user: { model: 'User', field: 'id', fields: ['name'] },
|
|
32
|
+
missing: { model: 'Unknown', field: 'id' }
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
await sanitizeRef.call(dobo, order, [user, order])
|
|
39
|
+
|
|
40
|
+
expect(order.properties[0].ref.user.type).to.equal('1:1')
|
|
41
|
+
expect(order.properties[0].ref.user.searchField).to.equal('id')
|
|
42
|
+
expect(order.properties[0].ref.user.labelField).to.equal('id')
|
|
43
|
+
expect(order.properties[0].ref.user.fields).to.include('id')
|
|
44
|
+
expect(order.properties[0].ref.missing).to.equal(undefined)
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
it('throws when duplicate ref keys exist across properties', async () => {
|
|
48
|
+
const schema = {
|
|
49
|
+
name: 'Order',
|
|
50
|
+
properties: [
|
|
51
|
+
{ name: 'a', ref: { rel: { model: 'User' } } },
|
|
52
|
+
{ name: 'b', ref: { rel: { model: 'User' } } }
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
const user = { name: 'User', properties: [{ name: 'id' }] }
|
|
56
|
+
|
|
57
|
+
let err
|
|
58
|
+
try {
|
|
59
|
+
await sanitizeRef.call(dobo, schema, [schema, user])
|
|
60
|
+
} catch (e) { err = e }
|
|
61
|
+
expect(err).to.be.instanceOf(Error)
|
|
62
|
+
expect(err.message).to.include('duplicateRefKeys')
|
|
63
|
+
})
|
|
64
|
+
})
|
package/wiki/APPLETS.md
CHANGED
|
File without changes
|