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.
Files changed (160) hide show
  1. package/.bootorder +0 -0
  2. package/.github/FUNDING.yml +0 -0
  3. package/.github/workflows/repo-lockdown.yml +0 -0
  4. package/.jsdoc.conf.json +0 -0
  5. package/LICENSE +0 -0
  6. package/README.md +0 -0
  7. package/docs/Dobo.html +0 -0
  8. package/docs/DoboAction.html +0 -0
  9. package/docs/DoboAdapter.html +0 -0
  10. package/docs/DoboConnection.html +0 -0
  11. package/docs/DoboFeature.html +0 -0
  12. package/docs/DoboModel.html +0 -0
  13. package/docs/data/search.json +0 -0
  14. package/docs/extend_bajo_hook-docs.js.html +0 -0
  15. package/docs/external-Tools.html +0 -0
  16. package/docs/fonts/Inconsolata-Regular.ttf +0 -0
  17. package/docs/fonts/OpenSans-Regular.ttf +0 -0
  18. package/docs/fonts/WorkSans-Bold.ttf +0 -0
  19. package/docs/global.html +0 -0
  20. package/docs/index.html +0 -0
  21. package/docs/index.js.html +0 -0
  22. package/docs/lib_factory_action.js.html +0 -0
  23. package/docs/lib_factory_adapter.js.html +0 -0
  24. package/docs/lib_factory_connection.js.html +0 -0
  25. package/docs/lib_factory_feature.js.html +0 -0
  26. package/docs/lib_factory_model.js.html +0 -0
  27. package/docs/lib_factory_model_build.js.html +0 -0
  28. package/docs/lib_factory_model_clear-record.js.html +0 -0
  29. package/docs/lib_factory_model_count-record.js.html +0 -0
  30. package/docs/lib_factory_model_create-record.js.html +0 -0
  31. package/docs/lib_factory_model_drop.js.html +0 -0
  32. package/docs/lib_factory_model_exists.js.html +0 -0
  33. package/docs/lib_factory_model_find-all-record.js.html +0 -0
  34. package/docs/lib_factory_model_find-one-record.js.html +0 -0
  35. package/docs/lib_factory_model_find-record.js.html +0 -0
  36. package/docs/lib_factory_model_get-record.js.html +0 -0
  37. package/docs/lib_factory_model_helper.js.html +0 -0
  38. package/docs/lib_factory_model_remove-record.js.html +0 -0
  39. package/docs/lib_factory_model_sanitize-body.js.html +0 -0
  40. package/docs/lib_factory_model_sanitize-fixture.js.html +0 -0
  41. package/docs/lib_factory_model_sanitize-record.js.html +0 -0
  42. package/docs/lib_factory_model_update-record.js.html +0 -0
  43. package/docs/lib_factory_model_upsert-record.js.html +0 -0
  44. package/docs/lib_factory_model_validate.js.html +0 -0
  45. package/docs/lib_helper.js.html +0 -0
  46. package/docs/module-Helper.html +0 -0
  47. package/docs/module-Helper_Model.html +0 -0
  48. package/docs/module-Hook.html +0 -0
  49. package/docs/scripts/core.js +0 -0
  50. package/docs/scripts/core.min.js +0 -0
  51. package/docs/scripts/resize.js +0 -0
  52. package/docs/scripts/search.js +0 -0
  53. package/docs/scripts/search.min.js +5 -5
  54. package/docs/scripts/third-party/Apache-License-2.0.txt +0 -0
  55. package/docs/scripts/third-party/fuse.js +0 -0
  56. package/docs/scripts/third-party/hljs-line-num-original.js +0 -0
  57. package/docs/scripts/third-party/hljs-line-num.js +0 -0
  58. package/docs/scripts/third-party/hljs-original.js +0 -0
  59. package/docs/scripts/third-party/hljs.js +0 -0
  60. package/docs/scripts/third-party/popper.js +0 -0
  61. package/docs/scripts/third-party/tippy.js +0 -0
  62. package/docs/scripts/third-party/tocbot.js +0 -0
  63. package/docs/scripts/third-party/tocbot.min.js +0 -0
  64. package/docs/static/bitcoin.jpeg +0 -0
  65. package/docs/static/home.md +0 -0
  66. package/docs/static/logo-ecosystem.png +0 -0
  67. package/docs/static/logo.png +0 -0
  68. package/docs/styles/clean-jsdoc-theme-base.css +0 -0
  69. package/docs/styles/clean-jsdoc-theme-dark.css +0 -0
  70. package/docs/styles/clean-jsdoc-theme-light.css +0 -0
  71. package/docs/styles/clean-jsdoc-theme-scrollbar.css +0 -0
  72. package/docs/styles/clean-jsdoc-theme-without-scrollbar.min.css +0 -0
  73. package/docs/styles/clean-jsdoc-theme.min.css +0 -0
  74. package/extend/bajo/hook.js +236 -236
  75. package/extend/bajo/intl/en-US.json +0 -0
  76. package/extend/bajo/intl/id.json +0 -0
  77. package/extend/bajoCli/applet/aggregate.js +0 -0
  78. package/extend/bajoCli/applet/clear-record.js +0 -0
  79. package/extend/bajoCli/applet/connection.js +0 -0
  80. package/extend/bajoCli/applet/count-record.js +0 -0
  81. package/extend/bajoCli/applet/create-record.js +0 -0
  82. package/extend/bajoCli/applet/find-record.js +0 -0
  83. package/extend/bajoCli/applet/get-record.js +0 -0
  84. package/extend/bajoCli/applet/histogram.js +0 -0
  85. package/extend/bajoCli/applet/lib/post-process.js +0 -0
  86. package/extend/bajoCli/applet/model.js +0 -0
  87. package/extend/bajoCli/applet/rebuild-model.js +0 -0
  88. package/extend/bajoCli/applet/remove-record.js +0 -0
  89. package/extend/bajoCli/applet/update-record.js +0 -0
  90. package/extend/bajoCli/applet.js +0 -0
  91. package/extend/dobo/adapter/memory.js +175 -175
  92. package/extend/dobo/feature/created-at.js +0 -0
  93. package/extend/dobo/feature/dt.js +0 -0
  94. package/extend/dobo/feature/image.js +0 -0
  95. package/extend/dobo/feature/immutable.js +0 -0
  96. package/extend/dobo/feature/removed-at.js +0 -0
  97. package/extend/dobo/feature/unique.js +0 -0
  98. package/extend/dobo/feature/updated-at.js +0 -0
  99. package/extend/waibuMpa/route/attachment/@model/@id/@field/@file.js +0 -0
  100. package/extend/waibuStatic/virtual.json +0 -0
  101. package/index.js +0 -0
  102. package/lib/factory/action.js +287 -287
  103. package/lib/factory/adapter.js +1055 -1055
  104. package/lib/factory/connection.js +109 -109
  105. package/lib/factory/feature.js +52 -52
  106. package/lib/factory/model/aggregate.js +23 -23
  107. package/lib/factory/model/build.js +25 -25
  108. package/lib/factory/model/bulk-create-record.js +36 -36
  109. package/lib/factory/model/clear-record.js +30 -30
  110. package/lib/factory/model/count-record.js +42 -42
  111. package/lib/factory/model/create-attachment.js +36 -36
  112. package/lib/factory/model/create-record.js +49 -49
  113. package/lib/factory/model/drop.js +26 -26
  114. package/lib/factory/model/exists.js +26 -26
  115. package/lib/factory/model/find-all-record.js +112 -112
  116. package/lib/factory/model/find-attachment.js +28 -28
  117. package/lib/factory/model/find-one-record.js +38 -38
  118. package/lib/factory/model/find-record.js +82 -82
  119. package/lib/factory/model/get-attachment.js +15 -15
  120. package/lib/factory/model/get-record.js +52 -52
  121. package/lib/factory/model/helper.js +575 -576
  122. package/lib/factory/model/histogram.js +23 -23
  123. package/lib/factory/model/list-attachment.js +40 -40
  124. package/lib/factory/model/load-fixtures.js +63 -63
  125. package/lib/factory/model/remove-attachment.js +24 -24
  126. package/lib/factory/model/remove-record.js +44 -44
  127. package/lib/factory/model/sanitize-body.js +57 -57
  128. package/lib/factory/model/sanitize-fixture.js +56 -56
  129. package/lib/factory/model/sanitize-record.js +80 -80
  130. package/lib/factory/model/transaction.js +15 -15
  131. package/lib/factory/model/update-attachment.js +9 -9
  132. package/lib/factory/model/update-record.js +58 -58
  133. package/lib/factory/model/upsert-record.js +71 -71
  134. package/lib/factory/model/validate.js +0 -0
  135. package/lib/factory/model.js +503 -503
  136. package/lib/helper.js +463 -463
  137. package/package.json +1 -1
  138. package/test/e2e/_run.js +12 -12
  139. package/test/e2e/e2e-factory-process.test.js +25 -25
  140. package/test/e2e/e2e-model-adapter-process.test.js +52 -52
  141. package/test/integration/aspect-01-start-connections.test.js +33 -33
  142. package/test/integration/aspect-02-query-regex.test.js +34 -34
  143. package/test/integration/aspect-03-model-adapter-flow.test.js +88 -88
  144. package/test/unit/_stub.js +244 -244
  145. package/test/unit/dobo-action.test.js +58 -58
  146. package/test/unit/dobo-connection.test.js +37 -37
  147. package/test/unit/dobo-core.test.js +136 -136
  148. package/test/unit/dobo-feature.test.js +25 -25
  149. package/test/unit/dobo-model.test.js +115 -115
  150. package/test/unit/helper-sanitize-all.test.js +40 -40
  151. package/test/unit/helper-sanitize-ref.test.js +64 -64
  152. package/wiki/APPLETS.md +0 -0
  153. package/wiki/CHANGES.md +477 -469
  154. package/wiki/CONFIG.md +0 -0
  155. package/wiki/CONTRIBUTING.md +0 -0
  156. package/wiki/DEV-GUIDE.md +0 -0
  157. package/wiki/ECOSYSTEM.md +0 -0
  158. package/wiki/GETTING-STARTED.md +0 -0
  159. package/wiki/QUERY-LANGUAGE.md +0 -0
  160. 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