@feathersjs/cli 5.0.0-pre.33 → 5.0.0-pre.34

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 (102) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/lib/app/index.d.ts +2 -2
  3. package/lib/app/index.js +1 -1
  4. package/lib/app/index.js.map +1 -1
  5. package/lib/app/index.ts +1 -0
  6. package/lib/app/templates/app.test.tpl.js +2 -1
  7. package/lib/app/templates/app.test.tpl.js.map +1 -1
  8. package/lib/app/templates/app.test.tpl.ts +4 -1
  9. package/lib/app/templates/app.tpl.js +12 -10
  10. package/lib/app/templates/app.tpl.js.map +1 -1
  11. package/lib/app/templates/app.tpl.ts +12 -10
  12. package/lib/app/templates/channels.tpl.js +2 -1
  13. package/lib/app/templates/channels.tpl.js.map +1 -1
  14. package/lib/app/templates/channels.tpl.ts +2 -1
  15. package/lib/app/templates/client.tpl.js +2 -1
  16. package/lib/app/templates/client.tpl.js.map +1 -1
  17. package/lib/app/templates/client.tpl.ts +2 -1
  18. package/lib/app/templates/{config.tpl.d.ts → configuration.tpl.d.ts} +0 -0
  19. package/lib/app/templates/{schemas.tpl.js → configuration.tpl.js} +25 -29
  20. package/lib/app/templates/configuration.tpl.js.map +1 -0
  21. package/lib/app/templates/{schemas.tpl.ts → configuration.tpl.ts} +25 -32
  22. package/lib/app/templates/declarations.tpl.js +3 -2
  23. package/lib/app/templates/declarations.tpl.js.map +1 -1
  24. package/lib/app/templates/declarations.tpl.ts +3 -2
  25. package/lib/app/templates/logger.tpl.d.ts +1 -0
  26. package/lib/app/templates/logger.tpl.js +11 -5
  27. package/lib/app/templates/logger.tpl.js.map +1 -1
  28. package/lib/app/templates/logger.tpl.ts +20 -8
  29. package/lib/app/templates/package.json.tpl.js +5 -2
  30. package/lib/app/templates/package.json.tpl.js.map +1 -1
  31. package/lib/app/templates/package.json.tpl.ts +5 -2
  32. package/lib/app/templates/services.tpl.js +2 -1
  33. package/lib/app/templates/services.tpl.js.map +1 -1
  34. package/lib/app/templates/services.tpl.ts +3 -1
  35. package/lib/app/templates/{schemas.tpl.d.ts → validators.tpl.d.ts} +0 -0
  36. package/lib/app/templates/validators.tpl.js +36 -0
  37. package/lib/app/templates/validators.tpl.js.map +1 -0
  38. package/lib/app/templates/validators.tpl.ts +40 -0
  39. package/lib/authentication/index.d.ts +1 -1
  40. package/lib/authentication/templates/authentication.tpl.js +2 -1
  41. package/lib/authentication/templates/authentication.tpl.js.map +1 -1
  42. package/lib/authentication/templates/authentication.tpl.ts +2 -1
  43. package/lib/authentication/templates/client.test.tpl.js +2 -1
  44. package/lib/authentication/templates/client.test.tpl.js.map +1 -1
  45. package/lib/authentication/templates/client.test.tpl.ts +2 -1
  46. package/lib/authentication/templates/knex.tpl.js +2 -2
  47. package/lib/authentication/templates/knex.tpl.js.map +1 -1
  48. package/lib/authentication/templates/knex.tpl.ts +2 -2
  49. package/lib/authentication/templates/schema.json.tpl.js +30 -20
  50. package/lib/authentication/templates/schema.json.tpl.js.map +1 -1
  51. package/lib/authentication/templates/schema.json.tpl.ts +37 -21
  52. package/lib/authentication/templates/schema.typebox.tpl.d.ts +1 -1
  53. package/lib/authentication/templates/schema.typebox.tpl.js +30 -22
  54. package/lib/authentication/templates/schema.typebox.tpl.js.map +1 -1
  55. package/lib/authentication/templates/schema.typebox.tpl.ts +37 -23
  56. package/lib/commons.d.ts +11 -4
  57. package/lib/commons.js +9 -1
  58. package/lib/commons.js.map +1 -1
  59. package/lib/commons.ts +8 -0
  60. package/lib/connection/index.d.ts +1 -1
  61. package/lib/connection/index.js +1 -1
  62. package/lib/connection/index.ts +1 -1
  63. package/lib/connection/templates/knex.tpl.js +4 -2
  64. package/lib/connection/templates/knex.tpl.js.map +1 -1
  65. package/lib/connection/templates/knex.tpl.ts +6 -2
  66. package/lib/connection/templates/mongodb.tpl.js +2 -1
  67. package/lib/connection/templates/mongodb.tpl.js.map +1 -1
  68. package/lib/connection/templates/mongodb.tpl.ts +3 -1
  69. package/lib/hook/templates/hook.tpl.js +4 -2
  70. package/lib/hook/templates/hook.tpl.js.map +1 -1
  71. package/lib/hook/templates/hook.tpl.ts +4 -2
  72. package/lib/service/index.d.ts +1 -1
  73. package/lib/service/templates/schema.json.tpl.js +23 -15
  74. package/lib/service/templates/schema.json.tpl.js.map +1 -1
  75. package/lib/service/templates/schema.json.tpl.ts +28 -17
  76. package/lib/service/templates/schema.typebox.tpl.js +21 -15
  77. package/lib/service/templates/schema.typebox.tpl.js.map +1 -1
  78. package/lib/service/templates/schema.typebox.tpl.ts +26 -17
  79. package/lib/service/templates/service.tpl.js +33 -19
  80. package/lib/service/templates/service.tpl.js.map +1 -1
  81. package/lib/service/templates/service.tpl.ts +38 -20
  82. package/lib/service/templates/test.tpl.js +2 -1
  83. package/lib/service/templates/test.tpl.js.map +1 -1
  84. package/lib/service/templates/test.tpl.ts +6 -1
  85. package/lib/service/type/custom.tpl.js +8 -4
  86. package/lib/service/type/custom.tpl.js.map +1 -1
  87. package/lib/service/type/custom.tpl.ts +14 -4
  88. package/lib/service/type/knex.tpl.js +7 -3
  89. package/lib/service/type/knex.tpl.js.map +1 -1
  90. package/lib/service/type/knex.tpl.ts +7 -3
  91. package/lib/service/type/mongodb.tpl.js +5 -2
  92. package/lib/service/type/mongodb.tpl.js.map +1 -1
  93. package/lib/service/type/mongodb.tpl.ts +5 -2
  94. package/package.json +26 -24
  95. package/lib/app/templates/config.tpl.js +0 -30
  96. package/lib/app/templates/config.tpl.js.map +0 -1
  97. package/lib/app/templates/config.tpl.ts +0 -31
  98. package/lib/app/templates/schemas.tpl.js.map +0 -1
  99. package/lib/authentication/templates/client.tpl.d.ts +0 -2
  100. package/lib/authentication/templates/client.tpl.js +0 -14
  101. package/lib/authentication/templates/client.tpl.js.map +0 -1
  102. package/lib/authentication/templates/client.tpl.ts +0 -19
@@ -1,18 +1,23 @@
1
1
  import { generator, toFile, when } from '@feathershq/pinion'
2
- import { renderSource } from '../../commons'
2
+ import { fileExists, renderSource } from '../../commons'
3
3
  import { ServiceGeneratorContext } from '../index'
4
4
 
5
5
  const template = ({
6
6
  camelName,
7
7
  upperName,
8
8
  relative,
9
- type
10
- }: ServiceGeneratorContext) => /* ts */ `import { resolve } from '@feathersjs/schema'
9
+ type,
10
+ cwd,
11
+ lib
12
+ }: ServiceGeneratorContext) => /* ts */ `// // For more information about this file see https://dove.feathersjs.com/guides/cli/service.schemas.html
13
+ import { resolve } from '@feathersjs/schema'
11
14
  import { Type, getDataValidator, getValidator, querySyntax } from '@feathersjs/typebox'
12
15
  import type { Static } from '@feathersjs/typebox'
13
16
 
14
17
  import type { HookContext } from '${relative}/declarations'
15
- import { dataValidator, queryValidator } from '${relative}/schemas/validators'
18
+ import { dataValidator, queryValidator } from '${relative}/${
19
+ fileExists(cwd, lib, 'schemas') ? 'schemas/' : '' // This is for legacy backwards compatibility
20
+ }validators'
16
21
 
17
22
  // Main data model schema
18
23
  export const ${camelName}Schema = Type.Object({
@@ -20,34 +25,38 @@ export const ${camelName}Schema = Type.Object({
20
25
  text: Type.String()
21
26
  }, { $id: '${upperName}', additionalProperties: false })
22
27
  export type ${upperName} = Static<typeof ${camelName}Schema>
23
- export const ${camelName}Resolver = resolve<${upperName}, HookContext>({
24
- properties: {}
25
- })
28
+ export const ${camelName}Resolver = resolve<${upperName}, HookContext>({})
26
29
 
27
- export const ${camelName}ExternalResolver = resolve<${upperName}, HookContext>({
28
- properties: {}
29
- })
30
+ export const ${camelName}ExternalResolver = resolve<${upperName}, HookContext>({})
30
31
 
31
32
  // Schema for creating new entries
32
33
  export const ${camelName}DataSchema = Type.Pick(${camelName}Schema, ['text'], {
33
- $id: '${upperName}Data', additionalProperties: false
34
+ $id: '${upperName}Data'
34
35
  })
35
36
  export type ${upperName}Data = Static<typeof ${camelName}DataSchema>
36
37
  export const ${camelName}DataValidator = getDataValidator(${camelName}DataSchema, dataValidator)
37
- export const ${camelName}DataResolver = resolve<${upperName}, HookContext>({
38
- properties: {}
38
+ export const ${camelName}DataResolver = resolve<${upperName}, HookContext>({})
39
+
40
+ // Schema for updating existing entries
41
+ export const ${camelName}PatchSchema = Type.Partial(${camelName}Schema, {
42
+ $id: '${upperName}Patch'
39
43
  })
44
+ export type ${upperName}Patch = Static<typeof ${camelName}PatchSchema>
45
+ export const ${camelName}PatchValidator = getDataValidator(${camelName}PatchSchema, dataValidator)
46
+ export const ${camelName}PatchResolver = resolve<${upperName}, HookContext>({})
40
47
 
41
48
  // Schema for allowed query properties
42
49
  export const ${camelName}QueryProperties = Type.Pick(${camelName}Schema, [
43
50
  '${type === 'mongodb' ? '_id' : 'id'}', 'text'
51
+ ])
52
+ export const ${camelName}QuerySchema = Type.Intersect([
53
+ querySyntax(${camelName}QueryProperties),
54
+ // Add additional query properties here
55
+ Type.Object({}, { additionalProperties: false })
44
56
  ], { additionalProperties: false })
45
- export const ${camelName}QuerySchema = querySyntax(${camelName}QueryProperties)
46
57
  export type ${upperName}Query = Static<typeof ${camelName}QuerySchema>
47
58
  export const ${camelName}QueryValidator = getValidator(${camelName}QuerySchema, queryValidator)
48
- export const ${camelName}QueryResolver = resolve<${upperName}Query, HookContext>({
49
- properties: {}
50
- })
59
+ export const ${camelName}QueryResolver = resolve<${upperName}Query, HookContext>({})
51
60
  `
52
61
 
53
62
  export const generate = (ctx: ServiceGeneratorContext) =>
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generate = exports.template = void 0;
4
4
  const pinion_1 = require("@feathershq/pinion");
5
5
  const commons_1 = require("../../commons");
6
- const template = ({ camelName, authentication, isEntityService, path, className, relative, schema, fileName }) => /* ts */ `
6
+ const template = ({ camelName, authentication, isEntityService, path, className, relative, schema, fileName }) => /* ts */ `// For more information about this file see https://dove.feathersjs.com/guides/cli/service.html
7
7
  ${authentication || isEntityService ? `import { authenticate } from '@feathersjs/authentication'` : ''}
8
8
  ${schema
9
9
  ? `
@@ -11,11 +11,13 @@ import { hooks as schemaHooks } from '@feathersjs/schema'
11
11
 
12
12
  import {
13
13
  ${camelName}DataValidator,
14
+ ${camelName}PatchValidator,
14
15
  ${camelName}QueryValidator,
15
16
  ${camelName}Resolver,
17
+ ${camelName}ExternalResolver,
16
18
  ${camelName}DataResolver,
17
- ${camelName}QueryResolver,
18
- ${camelName}ExternalResolver
19
+ ${camelName}PatchResolver,
20
+ ${camelName}QueryResolver
19
21
  } from './${fileName}.schema'
20
22
  `
21
23
  : ''}
@@ -31,7 +33,7 @@ export const ${camelName} = (app: Application) => {
31
33
  // Register our service on the Feathers application
32
34
  app.use('${path}', new ${className}(getOptions(app)), {
33
35
  // A list of all methods this service exposes externally
34
- methods: ['find', 'get', 'create', 'update', 'patch', 'remove'],
36
+ methods: ['find', 'get', 'create', 'patch', 'remove'],
35
37
  // You can add additional custom events to be sent to clients here
36
38
  events: []
37
39
  })
@@ -41,34 +43,46 @@ export const ${camelName} = (app: Application) => {
41
43
  all: [${authentication
42
44
  ? `
43
45
  authenticate('jwt'),`
46
+ : ''} ${schema
47
+ ? `
48
+ schemaHooks.resolveExternal(${camelName}ExternalResolver),
49
+ schemaHooks.resolveResult(${camelName}Resolver),`
44
50
  : ''}
45
- ]${isEntityService
46
- ? `,
47
- find: [ authenticate('jwt') ],
48
- get: [ authenticate('jwt') ],
51
+ ],${isEntityService
52
+ ? `
53
+ find: [authenticate('jwt')],
54
+ get: [authenticate('jwt')],
49
55
  create: [],
50
- update: [ authenticate('jwt') ],
51
- patch: [ authenticate('jwt') ],
52
- remove: [ authenticate('jwt') ]`
56
+ update: [authenticate('jwt')],
57
+ patch: [authenticate('jwt')],
58
+ remove: [authenticate('jwt')]`
53
59
  : ''}
54
60
  },
55
61
  before: {
56
62
  all: [${schema
57
63
  ? `
58
64
  schemaHooks.validateQuery(${camelName}QueryValidator),
65
+ schemaHooks.resolveQuery(${camelName}QueryResolver)
66
+ `
67
+ : ''}],
68
+ find: [],
69
+ get: [],
70
+ create: [${schema
71
+ ? `
59
72
  schemaHooks.validateData(${camelName}DataValidator),
60
- schemaHooks.resolveQuery(${camelName}QueryResolver),
61
73
  schemaHooks.resolveData(${camelName}DataResolver)
62
74
  `
63
- : ''}]
64
- },
65
- after: {
66
- all: [${schema
75
+ : ''}],
76
+ patch: [${schema
67
77
  ? `
68
- schemaHooks.resolveResult(${camelName}Resolver),
69
- schemaHooks.resolveExternal(${camelName}ExternalResolver)
78
+ schemaHooks.validateData(${camelName}PatchValidator),
79
+ schemaHooks.resolveData(${camelName}PatchResolver)
70
80
  `
71
- : ''}]
81
+ : ''}],
82
+ remove: []
83
+ },
84
+ after: {
85
+ all: []
72
86
  },
73
87
  error: {
74
88
  all: []
@@ -1 +1 @@
1
- {"version":3,"file":"service.tpl.js","sourceRoot":"","sources":["../../../src/service/templates/service.tpl.ts"],"names":[],"mappings":";;;AAAA,+CAAsE;AACtE,2CAA0D;AAGnD,MAAM,QAAQ,GAAG,CAAC,EACvB,SAAS,EACT,cAAc,EACd,eAAe,EACf,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,MAAM,EACN,QAAQ,EACgB,EAAE,EAAE,CAAC,QAAQ,CAAC;EACtC,cAAc,IAAI,eAAe,CAAC,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC,EAAE;EAEpG,MAAM;IACJ,CAAC,CAAC;;;;IAIF,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;YACD,QAAQ;CACnB;IACG,CAAC,CAAC,EACN;;oCAEoC,QAAQ;WACjC,SAAS,0BAA0B,QAAQ;;mBAEnC,QAAQ;EACzB,MAAM,CAAC,CAAC,CAAC,oBAAoB,QAAQ,UAAU,CAAC,CAAC,CAAC,EAAE;;;eAGvC,SAAS;;aAEX,IAAI,UAAU,SAAS;;;;;;;iBAOnB,IAAI;;cAGb,cAAc;IACZ,CAAC,CAAC;6BACiB;IACnB,CAAC,CAAC,EACN;SAEE,eAAe;IACb,CAAC,CAAC;;;;;;sCAM0B;IAC5B,CAAC,CAAC,EACN;;;cAIE,MAAM;IACJ,CAAC,CAAC;oCACwB,SAAS;mCACV,SAAS;mCACT,SAAS;kCACV,SAAS;OACpC;IACG,CAAC,CAAC,EACN;;;cAIE,MAAM;IACJ,CAAC,CAAC;oCACwB,SAAS;sCACP,SAAS;OACxC;IACG,CAAC,CAAC,EACN;;;;;;;;;kBASY,QAAQ;;OAEnB,IAAI,MAAM,SAAS;;;CAGzB,CAAA;AAlGY,QAAA,QAAQ,YAkGpB;AAED,MAAM,cAAc,GAAG,IAAA,eAAM,EAAC,CAAC,EAAE,GAAG,EAA2B,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAA;AAExF,MAAM,QAAQ,GAAG,CAAC,GAA4B,EAAE,EAAE,CACvD,IAAA,kBAAS,EAAC,GAAG,CAAC;KACX,IAAI,CACH,IAAA,sBAAY,EACV,gBAAQ,EACR,IAAA,eAAM,EAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAA2B,EAAE,EAAE,CAAC;IAC7D,GAAG;IACH,UAAU;IACV,GAAG,MAAM;IACT,GAAG,QAAQ,EAAE;CACd,CAAC,CACH,CACF;KACA,IAAI,CACH,IAAA,sBAAY,EACV,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAClC,YAAY,SAAS,cAAc,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,GAAG,EACpE,IAAA,gBAAO,GAAE,EACT,cAAc,CACf,CACF;KACA,IAAI,CACH,IAAA,sBAAY,EACV,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,mBAAmB,SAAS,GAAG,EAClD,IAAA,cAAK,EAAC,uBAAuB,CAAC,EAC9B,cAAc,CACf,CACF,CAAA;AA3BQ,QAAA,QAAQ,YA2BhB"}
1
+ {"version":3,"file":"service.tpl.js","sourceRoot":"","sources":["../../../src/service/templates/service.tpl.ts"],"names":[],"mappings":";;;AAAA,+CAAsE;AACtE,2CAA0D;AAGnD,MAAM,QAAQ,GAAG,CAAC,EACvB,SAAS,EACT,cAAc,EACd,eAAe,EACf,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,MAAM,EACN,QAAQ,EACgB,EAAE,EAAE,CAAC,QAAQ,CAAC;EACtC,cAAc,IAAI,eAAe,CAAC,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC,EAAE;EAEpG,MAAM;IACJ,CAAC,CAAC;;;;IAIF,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;YACD,QAAQ;CACnB;IACG,CAAC,CAAC,EACN;;oCAEoC,QAAQ;WACjC,SAAS,0BAA0B,QAAQ;;mBAEnC,QAAQ;EACzB,MAAM,CAAC,CAAC,CAAC,oBAAoB,QAAQ,UAAU,CAAC,CAAC,CAAC,EAAE;;;eAGvC,SAAS;;aAEX,IAAI,UAAU,SAAS;;;;;;;iBAOnB,IAAI;;cAGb,cAAc;IACZ,CAAC,CAAC;6BACiB;IACnB,CAAC,CAAC,EACN,IACJ,MAAM;IACJ,CAAC,CAAC;sCACgC,SAAS;oCACX,SAAS,YAAY;IACrD,CAAC,CAAC,EACN;UAEQ,eAAe;IACb,CAAC,CAAC;;;;;;oCAMwB;IAC1B,CAAC,CAAC,EACN;;;cAIE,MAAM;IACJ,CAAC,CAAC;oCACwB,SAAS;mCACV,SAAS;OACrC;IACG,CAAC,CAAC,EACN;;;iBAIE,MAAM;IACJ,CAAC,CAAC;mCACuB,SAAS;kCACV,SAAS;OACpC;IACG,CAAC,CAAC,EACN;gBAEE,MAAM;IACJ,CAAC,CAAC;mCACuB,SAAS;kCACV,SAAS;OACpC;IACG,CAAC,CAAC,EACN;;;;;;;;;;;;;kBAaY,QAAQ;;OAEnB,IAAI,MAAM,SAAS;;;CAGzB,CAAA;AApHY,QAAA,QAAQ,YAoHpB;AAED,MAAM,cAAc,GAAG,IAAA,eAAM,EAAC,CAAC,EAAE,GAAG,EAA2B,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAA;AAExF,MAAM,QAAQ,GAAG,CAAC,GAA4B,EAAE,EAAE,CACvD,IAAA,kBAAS,EAAC,GAAG,CAAC;KACX,IAAI,CACH,IAAA,sBAAY,EACV,gBAAQ,EACR,IAAA,eAAM,EAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAA2B,EAAE,EAAE,CAAC;IAC7D,GAAG;IACH,UAAU;IACV,GAAG,MAAM;IACT,GAAG,QAAQ,EAAE;CACd,CAAC,CACH,CACF;KACA,IAAI,CACH,IAAA,sBAAY,EACV,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAClC,YAAY,SAAS,cAAc,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,GAAG,EACpE,IAAA,gBAAO,GAAE,EACT,cAAc,CACf,CACF;KACA,IAAI,CACH,IAAA,sBAAY,EACV,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,mBAAmB,SAAS,GAAG,EAClD,IAAA,cAAK,EAAC,uBAAuB,CAAC,EAC9B,cAAc,CACf,CACF,CAAA;AA3BQ,QAAA,QAAQ,YA2BhB"}
@@ -11,7 +11,7 @@ export const template = ({
11
11
  relative,
12
12
  schema,
13
13
  fileName
14
- }: ServiceGeneratorContext) => /* ts */ `
14
+ }: ServiceGeneratorContext) => /* ts */ `// For more information about this file see https://dove.feathersjs.com/guides/cli/service.html
15
15
  ${authentication || isEntityService ? `import { authenticate } from '@feathersjs/authentication'` : ''}
16
16
  ${
17
17
  schema
@@ -20,11 +20,13 @@ import { hooks as schemaHooks } from '@feathersjs/schema'
20
20
 
21
21
  import {
22
22
  ${camelName}DataValidator,
23
+ ${camelName}PatchValidator,
23
24
  ${camelName}QueryValidator,
24
25
  ${camelName}Resolver,
26
+ ${camelName}ExternalResolver,
25
27
  ${camelName}DataResolver,
26
- ${camelName}QueryResolver,
27
- ${camelName}ExternalResolver
28
+ ${camelName}PatchResolver,
29
+ ${camelName}QueryResolver
28
30
  } from './${fileName}.schema'
29
31
  `
30
32
  : ''
@@ -41,7 +43,7 @@ export const ${camelName} = (app: Application) => {
41
43
  // Register our service on the Feathers application
42
44
  app.use('${path}', new ${className}(getOptions(app)), {
43
45
  // A list of all methods this service exposes externally
44
- methods: ['find', 'get', 'create', 'update', 'patch', 'remove'],
46
+ methods: ['find', 'get', 'create', 'patch', 'remove'],
45
47
  // You can add additional custom events to be sent to clients here
46
48
  events: []
47
49
  })
@@ -53,16 +55,22 @@ export const ${camelName} = (app: Application) => {
53
55
  ? `
54
56
  authenticate('jwt'),`
55
57
  : ''
56
- }
57
- ]${
58
+ } ${
59
+ schema
60
+ ? `
61
+ schemaHooks.resolveExternal(${camelName}ExternalResolver),
62
+ schemaHooks.resolveResult(${camelName}Resolver),`
63
+ : ''
64
+ }
65
+ ],${
58
66
  isEntityService
59
- ? `,
60
- find: [ authenticate('jwt') ],
61
- get: [ authenticate('jwt') ],
67
+ ? `
68
+ find: [authenticate('jwt')],
69
+ get: [authenticate('jwt')],
62
70
  create: [],
63
- update: [ authenticate('jwt') ],
64
- patch: [ authenticate('jwt') ],
65
- remove: [ authenticate('jwt') ]`
71
+ update: [authenticate('jwt')],
72
+ patch: [authenticate('jwt')],
73
+ remove: [authenticate('jwt')]`
66
74
  : ''
67
75
  }
68
76
  },
@@ -71,22 +79,32 @@ export const ${camelName} = (app: Application) => {
71
79
  schema
72
80
  ? `
73
81
  schemaHooks.validateQuery(${camelName}QueryValidator),
82
+ schemaHooks.resolveQuery(${camelName}QueryResolver)
83
+ `
84
+ : ''
85
+ }],
86
+ find: [],
87
+ get: [],
88
+ create: [${
89
+ schema
90
+ ? `
74
91
  schemaHooks.validateData(${camelName}DataValidator),
75
- schemaHooks.resolveQuery(${camelName}QueryResolver),
76
92
  schemaHooks.resolveData(${camelName}DataResolver)
77
93
  `
78
94
  : ''
79
- }]
80
- },
81
- after: {
82
- all: [${
95
+ }],
96
+ patch: [${
83
97
  schema
84
98
  ? `
85
- schemaHooks.resolveResult(${camelName}Resolver),
86
- schemaHooks.resolveExternal(${camelName}ExternalResolver)
99
+ schemaHooks.validateData(${camelName}PatchValidator),
100
+ schemaHooks.resolveData(${camelName}PatchResolver)
87
101
  `
88
102
  : ''
89
- }]
103
+ }],
104
+ remove: []
105
+ },
106
+ after: {
107
+ all: []
90
108
  },
91
109
  error: {
92
110
  all: []
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generate = void 0;
4
4
  const pinion_1 = require("@feathershq/pinion");
5
5
  const commons_1 = require("../../commons");
6
- const template = ({ relative, lib, path }) => /* ts */ `import assert from 'assert'
6
+ const template = ({ relative, lib, path }) => /* ts */ `// For more information about this file see https://dove.feathersjs.com/guides/cli/service.test.html
7
+ import assert from 'assert'
7
8
  import { app } from '../${relative}/${lib}/app'
8
9
 
9
10
  describe('${path} service', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"test.tpl.js","sourceRoot":"","sources":["../../../src/service/templates/test.tpl.ts"],"names":[],"mappings":";;;AAAA,+CAAsD;AACtD,2CAA4C;AAG5C,MAAM,QAAQ,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAA2B,EAAE,EAAE,CAAC,QAAQ,CAAC;0BACtD,QAAQ,IAAI,GAAG;;YAE7B,IAAI;;mCAEmB,IAAI;;;;;CAKtC,CAAA;AAEM,MAAM,QAAQ,GAAG,CAAC,GAA4B,EAAE,EAAE,CACvD,IAAA,kBAAS,EAAC,GAAG,CAAC,CAAC,IAAI,CACjB,IAAA,sBAAY,EACV,QAAQ,EACR,IAAA,eAAM,EAA0B,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC9D,IAAI;IACJ,UAAU;IACV,GAAG,MAAM;IACT,GAAG,QAAQ,OAAO;CACnB,CAAC,CACH,CACF,CAAA;AAXU,QAAA,QAAQ,YAWlB"}
1
+ {"version":3,"file":"test.tpl.js","sourceRoot":"","sources":["../../../src/service/templates/test.tpl.ts"],"names":[],"mappings":";;;AAAA,+CAAsD;AACtD,2CAA4C;AAG5C,MAAM,QAAQ,GAAG,CAAC,EAChB,QAAQ,EACR,GAAG,EACH,IAAI,EACoB,EAAE,EAAE,CAAC,QAAQ,CAAC;;0BAEd,QAAQ,IAAI,GAAG;;YAE7B,IAAI;;mCAEmB,IAAI;;;;;CAKtC,CAAA;AAEM,MAAM,QAAQ,GAAG,CAAC,GAA4B,EAAE,EAAE,CACvD,IAAA,kBAAS,EAAC,GAAG,CAAC,CAAC,IAAI,CACjB,IAAA,sBAAY,EACV,QAAQ,EACR,IAAA,eAAM,EAA0B,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC9D,IAAI;IACJ,UAAU;IACV,GAAG,MAAM;IACT,GAAG,QAAQ,OAAO;CACnB,CAAC,CACH,CACF,CAAA;AAXU,QAAA,QAAQ,YAWlB"}
@@ -2,7 +2,12 @@ import { generator, toFile } from '@feathershq/pinion'
2
2
  import { renderSource } from '../../commons'
3
3
  import { ServiceGeneratorContext } from '../index'
4
4
 
5
- const template = ({ relative, lib, path }: ServiceGeneratorContext) => /* ts */ `import assert from 'assert'
5
+ const template = ({
6
+ relative,
7
+ lib,
8
+ path
9
+ }: ServiceGeneratorContext) => /* ts */ `// For more information about this file see https://dove.feathersjs.com/guides/cli/service.test.html
10
+ import assert from 'assert'
6
11
  import { app } from '../${relative}/${lib}/app'
7
12
 
8
13
  describe('${path} service', () => {
@@ -3,20 +3,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generate = exports.template = void 0;
4
4
  const pinion_1 = require("@feathershq/pinion");
5
5
  const commons_1 = require("../../commons");
6
- const template = ({ className, upperName, schema, fileName, relative }) => `
7
- import type { Id, NullableId, Params } from '@feathersjs/feathers'
6
+ const template = ({ className, upperName, schema, fileName, relative }) => /* ts */ `// For more information about this file see https://dove.feathersjs.com/guides/cli/service.class.html#custom-services
7
+ import type { Id, NullableId, Params, ServiceInterface } from '@feathersjs/feathers'
8
8
 
9
9
  import type { Application } from '${relative}/declarations'
10
10
  ${schema
11
11
  ? `import type {
12
12
  ${upperName},
13
13
  ${upperName}Data,
14
+ ${upperName}Patch,
14
15
  ${upperName}Query
15
16
  } from './${fileName}.schema'
16
17
  `
17
18
  : `
18
19
  export type ${upperName} = any
19
20
  export type ${upperName}Data = any
21
+ export type ${upperName}Patch = any
20
22
  export type ${upperName}Query = any
21
23
  `}
22
24
 
@@ -29,7 +31,7 @@ export interface ${upperName}Params extends Params<${upperName}Query> {
29
31
  }
30
32
 
31
33
  // This is a skeleton for a custom service class. Remove or add the methods you need here
32
- export class ${className} {
34
+ export class ${className} implements ServiceInterface<${upperName}, ${upperName}Data, ${upperName}Params, ${upperName}Patch> {
33
35
  constructor (public options: ${className}Options) {
34
36
  }
35
37
 
@@ -57,6 +59,7 @@ export class ${className} {
57
59
  }
58
60
  }
59
61
 
62
+ // This method has to be added to the 'methods' option to make it available to clients
60
63
  async update (id: NullableId, data: ${upperName}Data, _params?: ${upperName}Params): Promise<${upperName}> {
61
64
  return {
62
65
  id: 0,
@@ -64,9 +67,10 @@ export class ${className} {
64
67
  }
65
68
  }
66
69
 
67
- async patch (id: NullableId, data: ${upperName}Data, _params?: ${upperName}Params): Promise<${upperName}> {
70
+ async patch (id: NullableId, data: ${upperName}Patch, _params?: ${upperName}Params): Promise<${upperName}> {
68
71
  return {
69
72
  id: 0,
73
+ text: \`Fallback for \${id}\`,
70
74
  ...data
71
75
  }
72
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"custom.tpl.js","sourceRoot":"","sources":["../../../src/service/type/custom.tpl.ts"],"names":[],"mappings":";;;AAAA,+CAAsD;AACtD,2CAA4C;AAGrC,MAAM,QAAQ,GAAG,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAA2B,EAAE,EAAE,CAAC;;;oCAGvE,QAAQ;EAE1C,MAAM;IACJ,CAAC,CAAC;IACF,SAAS;IACT,SAAS;IACT,SAAS;YACD,QAAQ;CACnB;IACG,CAAC,CAAC;cACQ,SAAS;cACT,SAAS;cACT,SAAS;CAEvB;;mBAEmB,SAAS;;;;mBAIT,SAAS,yBAAyB,SAAS;;;;;eAK/C,SAAS;iCACS,SAAS;;;0BAGhB,SAAS,oBAAoB,SAAS;;;;iCAI/B,SAAS,oBAAoB,SAAS;;;;;;;wBAO/C,SAAS,kBAAkB,SAAS,oBAAoB,SAAS;wBACjE,SAAS,oBAAoB,SAAS,oBAAoB,SAAS;wBACnE,SAAS,QAAQ,SAAS,oBAAoB,SAAS,oBAAoB,SAAS,IAAI,SAAS;;;;;;;;;;;wCAWjF,SAAS,mBAAmB,SAAS,oBAAoB,SAAS;;;;;;;uCAOnE,SAAS,mBAAmB,SAAS,oBAAoB,SAAS;;;;;;;4CAO7D,SAAS,oBAAoB,SAAS;;;;;;;;;;;CAWjF,CAAA;AAjFY,QAAA,QAAQ,YAiFpB;AAEM,MAAM,QAAQ,GAAG,CAAC,GAA4B,EAAE,EAAE,CACvD,IAAA,kBAAS,EAAC,GAAG,CAAC,CAAC,IAAI,CACjB,IAAA,sBAAY,EACV,gBAAQ,EACR,IAAA,eAAM,EAA0B,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC7D,GAAG;IACH,UAAU;IACV,GAAG,MAAM;IACT,GAAG,QAAQ,QAAQ;CACpB,CAAC,CACH,CACF,CAAA;AAXU,QAAA,QAAQ,YAWlB"}
1
+ {"version":3,"file":"custom.tpl.js","sourceRoot":"","sources":["../../../src/service/type/custom.tpl.ts"],"names":[],"mappings":";;;AAAA,+CAAsD;AACtD,2CAA4C;AAGrC,MAAM,QAAQ,GAAG,CAAC,EACvB,SAAS,EACT,SAAS,EACT,MAAM,EACN,QAAQ,EACR,QAAQ,EACgB,EAAE,EAAE,CAAC,QAAQ,CAAC;;;oCAGJ,QAAQ;EAE1C,MAAM;IACJ,CAAC,CAAC;IACF,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;YACD,QAAQ;CACnB;IACG,CAAC,CAAC;cACQ,SAAS;cACT,SAAS;cACT,SAAS;cACT,SAAS;CAEvB;;mBAEmB,SAAS;;;;mBAIT,SAAS,yBAAyB,SAAS;;;;;eAK/C,SAAS,gCAAgC,SAAS,KAAK,SAAS,SAAS,SAAS,WAAW,SAAS;iCACpF,SAAS;;;0BAGhB,SAAS,oBAAoB,SAAS;;;;iCAI/B,SAAS,oBAAoB,SAAS;;;;;;;wBAO/C,SAAS,kBAAkB,SAAS,oBAAoB,SAAS;wBACjE,SAAS,oBAAoB,SAAS,oBAAoB,SAAS;wBACnE,SAAS,QAAQ,SAAS,oBAAoB,SAAS,oBAAoB,SAAS,IAAI,SAAS;;;;;;;;;;;;wCAYjF,SAAS,mBAAmB,SAAS,oBAAoB,SAAS;;;;;;;uCAOnE,SAAS,oBAAoB,SAAS,oBAAoB,SAAS;;;;;;;;4CAQ9D,SAAS,oBAAoB,SAAS;;;;;;;;;;;CAWjF,CAAA;AA3FY,QAAA,QAAQ,YA2FpB;AAEM,MAAM,QAAQ,GAAG,CAAC,GAA4B,EAAE,EAAE,CACvD,IAAA,kBAAS,EAAC,GAAG,CAAC,CAAC,IAAI,CACjB,IAAA,sBAAY,EACV,gBAAQ,EACR,IAAA,eAAM,EAA0B,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC7D,GAAG;IACH,UAAU;IACV,GAAG,MAAM;IACT,GAAG,QAAQ,QAAQ;CACpB,CAAC,CACH,CACF,CAAA;AAXU,QAAA,QAAQ,YAWlB"}
@@ -2,8 +2,14 @@ import { generator, toFile } from '@feathershq/pinion'
2
2
  import { renderSource } from '../../commons'
3
3
  import { ServiceGeneratorContext } from '../index'
4
4
 
5
- export const template = ({ className, upperName, schema, fileName, relative }: ServiceGeneratorContext) => `
6
- import type { Id, NullableId, Params } from '@feathersjs/feathers'
5
+ export const template = ({
6
+ className,
7
+ upperName,
8
+ schema,
9
+ fileName,
10
+ relative
11
+ }: ServiceGeneratorContext) => /* ts */ `// For more information about this file see https://dove.feathersjs.com/guides/cli/service.class.html#custom-services
12
+ import type { Id, NullableId, Params, ServiceInterface } from '@feathersjs/feathers'
7
13
 
8
14
  import type { Application } from '${relative}/declarations'
9
15
  ${
@@ -11,12 +17,14 @@ ${
11
17
  ? `import type {
12
18
  ${upperName},
13
19
  ${upperName}Data,
20
+ ${upperName}Patch,
14
21
  ${upperName}Query
15
22
  } from './${fileName}.schema'
16
23
  `
17
24
  : `
18
25
  export type ${upperName} = any
19
26
  export type ${upperName}Data = any
27
+ export type ${upperName}Patch = any
20
28
  export type ${upperName}Query = any
21
29
  `
22
30
  }
@@ -30,7 +38,7 @@ export interface ${upperName}Params extends Params<${upperName}Query> {
30
38
  }
31
39
 
32
40
  // This is a skeleton for a custom service class. Remove or add the methods you need here
33
- export class ${className} {
41
+ export class ${className} implements ServiceInterface<${upperName}, ${upperName}Data, ${upperName}Params, ${upperName}Patch> {
34
42
  constructor (public options: ${className}Options) {
35
43
  }
36
44
 
@@ -58,6 +66,7 @@ export class ${className} {
58
66
  }
59
67
  }
60
68
 
69
+ // This method has to be added to the 'methods' option to make it available to clients
61
70
  async update (id: NullableId, data: ${upperName}Data, _params?: ${upperName}Params): Promise<${upperName}> {
62
71
  return {
63
72
  id: 0,
@@ -65,9 +74,10 @@ export class ${className} {
65
74
  }
66
75
  }
67
76
 
68
- async patch (id: NullableId, data: ${upperName}Data, _params?: ${upperName}Params): Promise<${upperName}> {
77
+ async patch (id: NullableId, data: ${upperName}Patch, _params?: ${upperName}Params): Promise<${upperName}> {
69
78
  return {
70
79
  id: 0,
80
+ text: \`Fallback for \${id}\`,
71
81
  ...data
72
82
  }
73
83
  }
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generate = exports.template = void 0;
4
4
  const pinion_1 = require("@feathershq/pinion");
5
5
  const commons_1 = require("../../commons");
6
- const migrationTemplate = ({ kebabPath }) => /* ts */ `import type { Knex } from 'knex'
6
+ const migrationTemplate = ({ kebabPath }) => /* ts */ `// For more information about this file see https://dove.feathersjs.com/guides/cli/knexfile.html
7
+ import type { Knex } from 'knex'
7
8
 
8
9
  export async function up(knex: Knex): Promise<void> {
9
10
  await knex.schema.createTable('${kebabPath}', table => {
@@ -16,7 +17,8 @@ export async function down(knex: Knex): Promise<void> {
16
17
  await knex.schema.dropTable('${kebabPath}')
17
18
  }
18
19
  `;
19
- const template = ({ className, upperName, feathers, schema, fileName, relative }) => /* ts */ `import type { Params } from '@feathersjs/feathers'
20
+ const template = ({ className, upperName, feathers, schema, fileName, relative }) => /* ts */ `// For more information about this file see https://dove.feathersjs.com/guides/cli/service.class.html#database-services
21
+ import type { Params } from '@feathersjs/feathers'
20
22
  import { KnexService } from '@feathersjs/knex'
21
23
  import type { KnexAdapterParams, KnexAdapterOptions } from '@feathersjs/knex'
22
24
 
@@ -25,12 +27,14 @@ ${schema
25
27
  ? `import type {
26
28
  ${upperName},
27
29
  ${upperName}Data,
30
+ ${upperName}Patch,
28
31
  ${upperName}Query
29
32
  } from './${fileName}.schema'
30
33
  `
31
34
  : `
32
35
  export type ${upperName} = any
33
36
  export type ${upperName}Data = any
37
+ export type ${upperName}Patch = any
34
38
  export type ${upperName}Query = any
35
39
  `}
36
40
 
@@ -39,7 +43,7 @@ export interface ${upperName}Params extends KnexAdapterParams<${upperName}Query>
39
43
 
40
44
  // By default calls the standard Knex adapter service methods but can be customized with your own functionality.
41
45
  export class ${className}<ServiceParams extends Params = ${upperName}Params>
42
- extends KnexService<${upperName}, ${upperName}Data, ServiceParams> {
46
+ extends KnexService<${upperName}, ${upperName}Data, ServiceParams, ${upperName}Patch> {
43
47
  }
44
48
 
45
49
  export const getOptions = (app: Application): KnexAdapterOptions => {
@@ -1 +1 @@
1
- {"version":3,"file":"knex.tpl.js","sourceRoot":"","sources":["../../../src/service/type/knex.tpl.ts"],"names":[],"mappings":";;;AAAA,+CAAsD;AACtD,2CAA4C;AAG5C,MAAM,iBAAiB,GAAG,CAAC,EACzB,SAAS,EACe,EAAE,EAAE,CAAC,QAAQ,CAAC;;;mCAGL,SAAS;;;;;;;iCAOX,SAAS;;CAEzC,CAAA;AAEM,MAAM,QAAQ,GAAG,CAAC,EACvB,SAAS,EACT,SAAS,EACT,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,QAAQ,EACgB,EAAE,EAAE,CAAC,QAAQ,CAAC;;;;oCAIJ,QAAQ;EAE1C,MAAM;IACJ,CAAC,CAAC;IACF,SAAS;IACT,SAAS;IACT,SAAS;YACD,QAAQ;CACnB;IACG,CAAC,CAAC;cACQ,SAAS;cACT,SAAS;cACT,SAAS;CAEvB;;mBAEmB,SAAS,oCAAoC,SAAS;;;;eAI1D,SAAS,mCAAmC,SAAS;wBAC5C,SAAS,KAAK,SAAS;;;;;;sBAMzB,QAAQ,CAAC,QAAQ;aAC1B,QAAQ;;;CAGpB,CAAA;AA1CY,QAAA,QAAQ,YA0CpB;AAEM,MAAM,QAAQ,GAAG,CAAC,GAA4B,EAAE,EAAE,CACvD,IAAA,kBAAS,EAAC,GAAG,CAAC;KACX,IAAI,CACH,IAAA,sBAAY,EACV,gBAAQ,EACR,IAAA,eAAM,EAA0B,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC7D,GAAG;IACH,UAAU;IACV,GAAG,MAAM;IACT,GAAG,QAAQ,QAAQ;CACpB,CAAC,CACH,CACF;KACA,IAAI,CACH,IAAA,sBAAY,EACV,iBAAiB,EACjB,IAAA,eAAM,EAA0B,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;IAC9D,+EAA+E;IAC/E,MAAM,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAElF,OAAO,GAAG,aAAa,IAAI,SAAS,EAAE,CAAA;AACxC,CAAC,CAAC,CACH,CACF,CAAA;AAvBQ,QAAA,QAAQ,YAuBhB"}
1
+ {"version":3,"file":"knex.tpl.js","sourceRoot":"","sources":["../../../src/service/type/knex.tpl.ts"],"names":[],"mappings":";;;AAAA,+CAAsD;AACtD,2CAA4C;AAG5C,MAAM,iBAAiB,GAAG,CAAC,EACzB,SAAS,EACe,EAAE,EAAE,CAAC,QAAQ,CAAC;;;;mCAIL,SAAS;;;;;;;iCAOX,SAAS;;CAEzC,CAAA;AAEM,MAAM,QAAQ,GAAG,CAAC,EACvB,SAAS,EACT,SAAS,EACT,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,QAAQ,EACgB,EAAE,EAAE,CAAC,QAAQ,CAAC;;;;;oCAKJ,QAAQ;EAE1C,MAAM;IACJ,CAAC,CAAC;IACF,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;YACD,QAAQ;CACnB;IACG,CAAC,CAAC;cACQ,SAAS;cACT,SAAS;cACT,SAAS;cACT,SAAS;CAEvB;;mBAEmB,SAAS,oCAAoC,SAAS;;;;eAI1D,SAAS,mCAAmC,SAAS;wBAC5C,SAAS,KAAK,SAAS,wBAAwB,SAAS;;;;;;sBAM1D,QAAQ,CAAC,QAAQ;aAC1B,QAAQ;;;CAGpB,CAAA;AA7CY,QAAA,QAAQ,YA6CpB;AAEM,MAAM,QAAQ,GAAG,CAAC,GAA4B,EAAE,EAAE,CACvD,IAAA,kBAAS,EAAC,GAAG,CAAC;KACX,IAAI,CACH,IAAA,sBAAY,EACV,gBAAQ,EACR,IAAA,eAAM,EAA0B,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC7D,GAAG;IACH,UAAU;IACV,GAAG,MAAM;IACT,GAAG,QAAQ,QAAQ;CACpB,CAAC,CACH,CACF;KACA,IAAI,CACH,IAAA,sBAAY,EACV,iBAAiB,EACjB,IAAA,eAAM,EAA0B,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;IAC9D,+EAA+E;IAC/E,MAAM,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAElF,OAAO,GAAG,aAAa,IAAI,SAAS,EAAE,CAAA;AACxC,CAAC,CAAC,CACH,CACF,CAAA;AAvBQ,QAAA,QAAQ,YAuBhB"}
@@ -4,7 +4,8 @@ import { ServiceGeneratorContext } from '../index'
4
4
 
5
5
  const migrationTemplate = ({
6
6
  kebabPath
7
- }: ServiceGeneratorContext) => /* ts */ `import type { Knex } from 'knex'
7
+ }: ServiceGeneratorContext) => /* ts */ `// For more information about this file see https://dove.feathersjs.com/guides/cli/knexfile.html
8
+ import type { Knex } from 'knex'
8
9
 
9
10
  export async function up(knex: Knex): Promise<void> {
10
11
  await knex.schema.createTable('${kebabPath}', table => {
@@ -25,7 +26,8 @@ export const template = ({
25
26
  schema,
26
27
  fileName,
27
28
  relative
28
- }: ServiceGeneratorContext) => /* ts */ `import type { Params } from '@feathersjs/feathers'
29
+ }: ServiceGeneratorContext) => /* ts */ `// For more information about this file see https://dove.feathersjs.com/guides/cli/service.class.html#database-services
30
+ import type { Params } from '@feathersjs/feathers'
29
31
  import { KnexService } from '@feathersjs/knex'
30
32
  import type { KnexAdapterParams, KnexAdapterOptions } from '@feathersjs/knex'
31
33
 
@@ -35,12 +37,14 @@ ${
35
37
  ? `import type {
36
38
  ${upperName},
37
39
  ${upperName}Data,
40
+ ${upperName}Patch,
38
41
  ${upperName}Query
39
42
  } from './${fileName}.schema'
40
43
  `
41
44
  : `
42
45
  export type ${upperName} = any
43
46
  export type ${upperName}Data = any
47
+ export type ${upperName}Patch = any
44
48
  export type ${upperName}Query = any
45
49
  `
46
50
  }
@@ -50,7 +54,7 @@ export interface ${upperName}Params extends KnexAdapterParams<${upperName}Query>
50
54
 
51
55
  // By default calls the standard Knex adapter service methods but can be customized with your own functionality.
52
56
  export class ${className}<ServiceParams extends Params = ${upperName}Params>
53
- extends KnexService<${upperName}, ${upperName}Data, ServiceParams> {
57
+ extends KnexService<${upperName}, ${upperName}Data, ServiceParams, ${upperName}Patch> {
54
58
  }
55
59
 
56
60
  export const getOptions = (app: Application): KnexAdapterOptions => {
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generate = exports.template = void 0;
4
4
  const pinion_1 = require("@feathershq/pinion");
5
5
  const commons_1 = require("../../commons");
6
- const template = ({ className, upperName, schema, fileName, kebabPath, relative }) => /* ts */ `import type { Params } from '@feathersjs/feathers'
6
+ const template = ({ className, upperName, schema, fileName, kebabPath, relative }) => /* ts */ `// For more information about this file see https://dove.feathersjs.com/guides/cli/service.class.html#database-services
7
+ import type { Params } from '@feathersjs/feathers'
7
8
  import { MongoDBService } from \'@feathersjs/mongodb\'
8
9
  import type { MongoDBAdapterParams, MongoDBAdapterOptions } from \'@feathersjs/mongodb\'
9
10
 
@@ -12,12 +13,14 @@ ${schema
12
13
  ? `import type {
13
14
  ${upperName},
14
15
  ${upperName}Data,
16
+ ${upperName}Patch,
15
17
  ${upperName}Query
16
18
  } from './${fileName}.schema'
17
19
  `
18
20
  : `
19
21
  export type ${upperName} = any
20
22
  export type ${upperName}Data = any
23
+ export type ${upperName}Patch = any
21
24
  export type ${upperName}Query = any
22
25
  `}
23
26
 
@@ -26,7 +29,7 @@ export interface ${upperName}Params extends MongoDBAdapterParams<${upperName}Que
26
29
 
27
30
  // By default calls the standard MongoDB adapter service methods but can be customized with your own functionality.
28
31
  export class ${className}<ServiceParams extends Params = ${upperName}Params>
29
- extends MongoDBService<${upperName}, ${upperName}Data, ServiceParams> {
32
+ extends MongoDBService<${upperName}, ${upperName}Data, ServiceParams, ${upperName}Patch> {
30
33
  }
31
34
 
32
35
  export const getOptions = (app: Application): MongoDBAdapterOptions => {
@@ -1 +1 @@
1
- {"version":3,"file":"mongodb.tpl.js","sourceRoot":"","sources":["../../../src/service/type/mongodb.tpl.ts"],"names":[],"mappings":";;;AAAA,+CAAsD;AACtD,2CAA4C;AAGrC,MAAM,QAAQ,GAAG,CAAC,EACvB,SAAS,EACT,SAAS,EACT,MAAM,EACN,QAAQ,EACR,SAAS,EACT,QAAQ,EACgB,EAAE,EAAE,CAAC,QAAQ,CAAC;;;;oCAIJ,QAAQ;EAE1C,MAAM;IACJ,CAAC,CAAC;IACF,SAAS;IACT,SAAS;IACT,SAAS;YACD,QAAQ;CACnB;IACG,CAAC,CAAC;cACQ,SAAS;cACT,SAAS;cACT,SAAS;CAEvB;;mBAEmB,SAAS,uCAAuC,SAAS;;;;eAI7D,SAAS,mCAAmC,SAAS;2BACzC,SAAS,KAAK,SAAS;;;;;;gEAMc,SAAS;;;CAGxE,CAAA;AAzCY,QAAA,QAAQ,YAyCpB;AAEM,MAAM,QAAQ,GAAG,CAAC,GAA4B,EAAE,EAAE,CACvD,IAAA,kBAAS,EAAC,GAAG,CAAC,CAAC,IAAI,CACjB,IAAA,sBAAY,EACV,gBAAQ,EACR,IAAA,eAAM,EAA0B,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC7D,GAAG;IACH,UAAU;IACV,GAAG,MAAM;IACT,GAAG,QAAQ,QAAQ;CACpB,CAAC,CACH,CACF,CAAA;AAXU,QAAA,QAAQ,YAWlB"}
1
+ {"version":3,"file":"mongodb.tpl.js","sourceRoot":"","sources":["../../../src/service/type/mongodb.tpl.ts"],"names":[],"mappings":";;;AAAA,+CAAsD;AACtD,2CAA4C;AAGrC,MAAM,QAAQ,GAAG,CAAC,EACvB,SAAS,EACT,SAAS,EACT,MAAM,EACN,QAAQ,EACR,SAAS,EACT,QAAQ,EACgB,EAAE,EAAE,CAAC,QAAQ,CAAC;;;;;oCAKJ,QAAQ;EAE1C,MAAM;IACJ,CAAC,CAAC;IACF,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;YACD,QAAQ;CACnB;IACG,CAAC,CAAC;cACQ,SAAS;cACT,SAAS;cACT,SAAS;cACT,SAAS;CAEvB;;mBAEmB,SAAS,uCAAuC,SAAS;;;;eAI7D,SAAS,mCAAmC,SAAS;2BACzC,SAAS,KAAK,SAAS,wBAAwB,SAAS;;;;;;gEAMnB,SAAS;;;CAGxE,CAAA;AA5CY,QAAA,QAAQ,YA4CpB;AAEM,MAAM,QAAQ,GAAG,CAAC,GAA4B,EAAE,EAAE,CACvD,IAAA,kBAAS,EAAC,GAAG,CAAC,CAAC,IAAI,CACjB,IAAA,sBAAY,EACV,gBAAQ,EACR,IAAA,eAAM,EAA0B,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC7D,GAAG;IACH,UAAU;IACV,GAAG,MAAM;IACT,GAAG,QAAQ,QAAQ;CACpB,CAAC,CACH,CACF,CAAA;AAXU,QAAA,QAAQ,YAWlB"}
@@ -9,7 +9,8 @@ export const template = ({
9
9
  fileName,
10
10
  kebabPath,
11
11
  relative
12
- }: ServiceGeneratorContext) => /* ts */ `import type { Params } from '@feathersjs/feathers'
12
+ }: ServiceGeneratorContext) => /* ts */ `// For more information about this file see https://dove.feathersjs.com/guides/cli/service.class.html#database-services
13
+ import type { Params } from '@feathersjs/feathers'
13
14
  import { MongoDBService } from \'@feathersjs/mongodb\'
14
15
  import type { MongoDBAdapterParams, MongoDBAdapterOptions } from \'@feathersjs/mongodb\'
15
16
 
@@ -19,12 +20,14 @@ ${
19
20
  ? `import type {
20
21
  ${upperName},
21
22
  ${upperName}Data,
23
+ ${upperName}Patch,
22
24
  ${upperName}Query
23
25
  } from './${fileName}.schema'
24
26
  `
25
27
  : `
26
28
  export type ${upperName} = any
27
29
  export type ${upperName}Data = any
30
+ export type ${upperName}Patch = any
28
31
  export type ${upperName}Query = any
29
32
  `
30
33
  }
@@ -34,7 +37,7 @@ export interface ${upperName}Params extends MongoDBAdapterParams<${upperName}Que
34
37
 
35
38
  // By default calls the standard MongoDB adapter service methods but can be customized with your own functionality.
36
39
  export class ${className}<ServiceParams extends Params = ${upperName}Params>
37
- extends MongoDBService<${upperName}, ${upperName}Data, ServiceParams> {
40
+ extends MongoDBService<${upperName}, ${upperName}Data, ServiceParams, ${upperName}Patch> {
38
41
  }
39
42
 
40
43
  export const getOptions = (app: Application): MongoDBAdapterOptions => {