@pikku/cli 0.6.20 → 0.7.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 (100) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/bin/pikku-all.ts +41 -18
  3. package/bin/pikku-channels-map.ts +4 -4
  4. package/bin/pikku-channels.ts +17 -12
  5. package/bin/pikku-fetch.ts +3 -3
  6. package/bin/pikku-function-types.ts +4 -4
  7. package/bin/pikku-functions.ts +35 -0
  8. package/bin/{pikku-routes-map.ts → pikku-http-map.ts} +10 -10
  9. package/bin/{pikku-http.ts → pikku-http-routes.ts} +17 -10
  10. package/bin/pikku-nextjs.ts +9 -9
  11. package/bin/pikku-openapi.ts +10 -6
  12. package/bin/pikku-rpc.ts +22 -0
  13. package/bin/pikku-scheduler.ts +15 -13
  14. package/bin/pikku-schemas.ts +10 -6
  15. package/bin/pikku-websocket.ts +1 -1
  16. package/bin/pikku.ts +2 -2
  17. package/cli.schema.json +2 -2
  18. package/dist/bin/pikku-all.js +37 -16
  19. package/dist/bin/pikku-channels-map.js +4 -4
  20. package/dist/bin/pikku-channels.js +6 -10
  21. package/dist/bin/pikku-fetch.d.ts +1 -1
  22. package/dist/bin/pikku-fetch.js +3 -3
  23. package/dist/bin/pikku-function-types.js +4 -4
  24. package/dist/bin/pikku-functions.d.ts +3 -0
  25. package/dist/bin/pikku-functions.js +9 -0
  26. package/dist/bin/{pikku-routes-map.d.ts → pikku-http-map.d.ts} +1 -1
  27. package/dist/bin/{pikku-routes-map.js → pikku-http-map.js} +7 -7
  28. package/dist/bin/{pikku-http.js → pikku-http-routes.js} +6 -11
  29. package/dist/bin/pikku-nextjs.d.ts +1 -1
  30. package/dist/bin/pikku-nextjs.js +8 -8
  31. package/dist/bin/pikku-openapi.d.ts +1 -1
  32. package/dist/bin/pikku-openapi.js +6 -6
  33. package/dist/bin/pikku-rpc.d.ts +3 -0
  34. package/dist/bin/pikku-rpc.js +8 -0
  35. package/dist/bin/pikku-scheduler.js +7 -10
  36. package/dist/bin/pikku-schemas.d.ts +1 -1
  37. package/dist/bin/pikku-schemas.js +6 -6
  38. package/dist/bin/pikku-websocket.js +1 -1
  39. package/dist/bin/pikku.js +2 -2
  40. package/dist/src/inspector-glob.d.ts +1 -1
  41. package/dist/src/inspector-glob.js +2 -2
  42. package/dist/src/pikku-cli-config.d.ts +10 -4
  43. package/dist/src/pikku-cli-config.js +22 -4
  44. package/dist/src/{schema/schema-generator.d.ts → schema-generator.d.ts} +1 -1
  45. package/dist/src/{schema/schema-generator.js → schema-generator.js} +29 -8
  46. package/dist/src/{core/serialize-import-map.js → serialize-import-map.js} +2 -1
  47. package/dist/src/serialize-pikku-types.js +136 -0
  48. package/dist/src/{scheduler/serialize-schedulers.d.ts → serialize-scheduler-meta.d.ts} +0 -1
  49. package/dist/src/serialize-scheduler-meta.js +10 -0
  50. package/dist/src/{channels/serialize-typed-channel-map.js → serialize-typed-channel-map.js} +7 -4
  51. package/dist/src/{http/serialize-typed-route-map.js → serialize-typed-function-map.js} +2 -2
  52. package/dist/src/serialize-typed-http-map.d.ts +4 -0
  53. package/dist/src/serialize-typed-http-map.js +107 -0
  54. package/dist/src/utils.d.ts +1 -0
  55. package/dist/src/utils.js +17 -5
  56. package/dist/tsconfig.tsbuildinfo +1 -1
  57. package/package.json +3 -3
  58. package/src/inspector-glob.ts +2 -2
  59. package/src/pikku-cli-config.ts +44 -8
  60. package/src/{schema/schema-generator.ts → schema-generator.ts} +31 -9
  61. package/src/{core/serialize-import-map.ts → serialize-import-map.ts} +2 -1
  62. package/src/serialize-pikku-types.ts +143 -0
  63. package/src/serialize-scheduler-meta.ts +18 -0
  64. package/src/{channels/serialize-typed-channel-map.ts → serialize-typed-channel-map.ts} +8 -6
  65. package/src/{http/serialize-typed-route-map.ts → serialize-typed-function-map.ts} +3 -2
  66. package/src/serialize-typed-http-map.ts +151 -0
  67. package/src/utils.ts +29 -5
  68. package/dist/src/channels/serialize-channels.d.ts +0 -3
  69. package/dist/src/channels/serialize-channels.js +0 -19
  70. package/dist/src/core/serialize-pikku-types.js +0 -48
  71. package/dist/src/http/serialize-route-imports.d.ts +0 -1
  72. package/dist/src/http/serialize-route-imports.js +0 -13
  73. package/dist/src/http/serialize-route-meta.d.ts +0 -2
  74. package/dist/src/http/serialize-route-meta.js +0 -6
  75. package/dist/src/scheduler/serialize-schedulers.js +0 -22
  76. package/src/channels/serialize-channels.ts +0 -34
  77. package/src/core/serialize-pikku-types.ts +0 -55
  78. package/src/http/serialize-route-imports.ts +0 -24
  79. package/src/http/serialize-route-meta.ts +0 -10
  80. package/src/scheduler/serialize-schedulers.ts +0 -41
  81. /package/dist/bin/{pikku-http.d.ts → pikku-http-routes.d.ts} +0 -0
  82. /package/dist/src/{openapi/openapi-spec-generator.d.ts → openapi-spec-generator.d.ts} +0 -0
  83. /package/dist/src/{openapi/openapi-spec-generator.js → openapi-spec-generator.js} +0 -0
  84. /package/dist/src/{http/serialize-fetch-wrapper.d.ts → serialize-fetch-wrapper.d.ts} +0 -0
  85. /package/dist/src/{http/serialize-fetch-wrapper.js → serialize-fetch-wrapper.js} +0 -0
  86. /package/dist/src/{core/serialize-import-map.d.ts → serialize-import-map.d.ts} +0 -0
  87. /package/dist/src/{nextjs/serialize-nextjs-backend-wrapper.d.ts → serialize-nextjs-backend-wrapper.d.ts} +0 -0
  88. /package/dist/src/{nextjs/serialize-nextjs-backend-wrapper.js → serialize-nextjs-backend-wrapper.js} +0 -0
  89. /package/dist/src/{nextjs/serialize-nextjs-http-wrapper.d.ts → serialize-nextjs-http-wrapper.d.ts} +0 -0
  90. /package/dist/src/{nextjs/serialize-nextjs-http-wrapper.js → serialize-nextjs-http-wrapper.js} +0 -0
  91. /package/dist/src/{core/serialize-pikku-types.d.ts → serialize-pikku-types.d.ts} +0 -0
  92. /package/dist/src/{channels/serialize-typed-channel-map.d.ts → serialize-typed-channel-map.d.ts} +0 -0
  93. /package/dist/src/{http/serialize-typed-route-map.d.ts → serialize-typed-function-map.d.ts} +0 -0
  94. /package/dist/src/{channels/serialize-websocket-wrapper.d.ts → serialize-websocket-wrapper.d.ts} +0 -0
  95. /package/dist/src/{channels/serialize-websocket-wrapper.js → serialize-websocket-wrapper.js} +0 -0
  96. /package/src/{openapi/openapi-spec-generator.ts → openapi-spec-generator.ts} +0 -0
  97. /package/src/{http/serialize-fetch-wrapper.ts → serialize-fetch-wrapper.ts} +0 -0
  98. /package/src/{nextjs/serialize-nextjs-backend-wrapper.ts → serialize-nextjs-backend-wrapper.ts} +0 -0
  99. /package/src/{nextjs/serialize-nextjs-http-wrapper.ts → serialize-nextjs-http-wrapper.ts} +0 -0
  100. /package/src/{channels/serialize-websocket-wrapper.ts → serialize-websocket-wrapper.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @pikku/cli
2
2
 
3
+ ## 0.7.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 534fdef: feat: adding rpc (locally for now)
8
+ - Updated dependencies [534fdef]
9
+ - @pikku/inspector@0.7.3
10
+ - @pikku/core@0.7.3
11
+
12
+ ## 0.7.0
13
+
14
+ - Now function first. No breaking changes for end user here, just internals
15
+
3
16
  ## 0.6.20
4
17
 
5
18
  ### Patch Changes
package/bin/pikku-all.ts CHANGED
@@ -7,9 +7,9 @@ import {
7
7
  writeFileInDir,
8
8
  } from '../src/utils.js'
9
9
  import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
10
- import { pikkuHTTP } from './pikku-http.js'
10
+ import { pikkuHTTP } from './pikku-http-routes.js'
11
11
  import { pikkuFunctionTypes } from './pikku-function-types.js'
12
- import { pikkuHTTPMap } from './pikku-routes-map.js'
12
+ import { pikkuHTTPMap } from './pikku-http-map.js'
13
13
  import { existsSync } from 'fs'
14
14
  import { pikkuFetch } from './pikku-fetch.js'
15
15
  import { pikkuChannelsMap } from './pikku-channels-map.js'
@@ -21,19 +21,25 @@ import { pikkuSchemas } from './pikku-schemas.js'
21
21
  import { pikkuWebSocket } from './pikku-websocket.js'
22
22
  import { inspectorGlob } from '../src/inspector-glob.js'
23
23
  import chokidar from 'chokidar'
24
+ import { pikkuFunctions } from './pikku-functions.js'
25
+ import { pikkuRPC } from './pikku-rpc.js'
24
26
 
25
27
  const runAll = async (cliConfig: PikkuCLIConfig, options: PikkuCLIOptions) => {
28
+ const metaImports: string[] = []
26
29
  const imports: string[] = []
27
- const addImport = (from: string) => {
28
- imports.push(
29
- `import '${getFileImportRelativePath(cliConfig.bootstrapFile, from, cliConfig.packageMappings)}'`
30
- )
30
+ const addImport = (from: string, type: 'meta' | 'events' | 'other') => {
31
+ const statement = `import '${getFileImportRelativePath(cliConfig.bootstrapFile, from, cliConfig.packageMappings)}'`
32
+ if (type === 'meta') {
33
+ metaImports.push(statement)
34
+ } else {
35
+ imports.push(statement)
36
+ }
31
37
  }
32
38
 
33
39
  let typesDeclarationFileExists = true
34
40
  let visitState = await inspectorGlob(
35
41
  cliConfig.rootDir,
36
- cliConfig.routeDirectories,
42
+ cliConfig.srcDirectories,
37
43
  cliConfig.filters
38
44
  )
39
45
 
@@ -42,38 +48,52 @@ const runAll = async (cliConfig: PikkuCLIConfig, options: PikkuCLIOptions) => {
42
48
  }
43
49
  await pikkuFunctionTypes(cliConfig, options, visitState)
44
50
 
45
- // This is needed since the addRoutes function will add the routes to the visitState
51
+ // This is needed since the addHTTPRoute function will add the routes to the visitState
46
52
  if (!typesDeclarationFileExists) {
47
53
  logInfo(`• Type file first created, inspecting again...\x1b[0m`)
48
54
  visitState = await inspectorGlob(
49
55
  cliConfig.rootDir,
50
- cliConfig.routeDirectories,
56
+ cliConfig.srcDirectories,
51
57
  cliConfig.filters
52
58
  )
53
59
  }
54
60
 
61
+ const functions = pikkuFunctions(cliConfig, visitState)
62
+ if (!functions) {
63
+ logInfo(`• No functions found, skipping remaining steps...\x1b[0m`)
64
+ process.exit(1)
65
+ }
66
+ addImport(cliConfig.functionsMetaFile, 'meta')
67
+ addImport(cliConfig.functionsFile, 'events')
68
+
69
+ await pikkuRPC(cliConfig, visitState)
70
+ addImport(cliConfig.rpcFile, 'meta')
71
+
55
72
  const routes = await pikkuHTTP(cliConfig, visitState)
56
73
  if (routes) {
57
74
  await pikkuHTTPMap(cliConfig, visitState)
58
75
  await pikkuFetch(cliConfig)
59
- addImport(cliConfig.routesFile)
76
+ addImport(cliConfig.httpRoutesMetaFile, 'meta')
77
+ addImport(cliConfig.httpRoutesFile, 'events')
60
78
  }
61
79
 
62
80
  const scheduled = await pikkuScheduler(cliConfig, visitState)
63
81
  if (scheduled) {
64
- addImport(cliConfig.schedulersFile)
82
+ addImport(cliConfig.schedulersMetaFile, 'meta')
83
+ addImport(cliConfig.schedulersFile, 'events')
65
84
  }
66
85
 
67
86
  const channels = await pikkuChannels(cliConfig, visitState)
68
87
  if (channels) {
69
88
  await pikkuChannelsMap(cliConfig, visitState)
70
89
  await pikkuWebSocket(cliConfig)
71
- addImport(cliConfig.channelsFile)
90
+ addImport(cliConfig.channelsMetaFile, 'meta')
91
+ addImport(cliConfig.channelsFile, 'events')
72
92
  }
73
93
 
74
94
  const schemas = await pikkuSchemas(cliConfig, visitState)
75
95
  if (schemas) {
76
- addImport(`${cliConfig.schemaDirectory}/register.gen.ts`)
96
+ addImport(`${cliConfig.schemaDirectory}/register.gen.ts`, 'other')
77
97
  }
78
98
 
79
99
  if (cliConfig.nextBackendFile || cliConfig.nextHTTPFile) {
@@ -84,17 +104,20 @@ const runAll = async (cliConfig: PikkuCLIConfig, options: PikkuCLIOptions) => {
84
104
  logInfo(`• OpenAPI requires a reinspection to pickup new generated types..`)
85
105
  visitState = await inspectorGlob(
86
106
  cliConfig.rootDir,
87
- cliConfig.routeDirectories,
107
+ cliConfig.srcDirectories,
88
108
  cliConfig.filters
89
109
  )
90
110
  await pikkuOpenAPI(cliConfig, visitState)
91
111
  }
92
112
 
93
- await writeFileInDir(cliConfig.bootstrapFile, imports.join('\n'))
113
+ await writeFileInDir(
114
+ cliConfig.bootstrapFile,
115
+ [...metaImports, ...imports].join('\n')
116
+ )
94
117
  }
95
118
 
96
119
  const watch = (cliConfig: PikkuCLIConfig, options: PikkuCLIOptions) => {
97
- const configWatcher = chokidar.watch(cliConfig.routeDirectories, {
120
+ const configWatcher = chokidar.watch(cliConfig.srcDirectories, {
98
121
  ignoreInitial: true,
99
122
  ignored: /.*\.gen\.tsx?/,
100
123
  })
@@ -105,9 +128,9 @@ const watch = (cliConfig: PikkuCLIConfig, options: PikkuCLIOptions) => {
105
128
  watcher.close()
106
129
 
107
130
  logInfo(
108
- `• Watching directories: \n - ${cliConfig.routeDirectories.join('\n - ')}`
131
+ `• Watching directories: \n - ${cliConfig.srcDirectories.join('\n - ')}`
109
132
  )
110
- watcher = chokidar.watch(cliConfig.routeDirectories, {
133
+ watcher = chokidar.watch(cliConfig.srcDirectories, {
111
134
  ignoreInitial: true,
112
135
  ignored: /.*\.gen\.ts/,
113
136
  })
@@ -7,7 +7,7 @@ import {
7
7
  PikkuCLIOptions,
8
8
  writeFileInDir,
9
9
  } from '../src/utils.js'
10
- import { serializeTypedChannelsMap } from '../src/channels/serialize-typed-channel-map.js'
10
+ import { serializeTypedChannelsMap } from '../src/serialize-typed-channel-map.js'
11
11
  import { inspectorGlob } from '../src/inspector-glob.js'
12
12
 
13
13
  export const pikkuChannelsMap = async (
@@ -22,7 +22,7 @@ export const pikkuChannelsMap = async (
22
22
  const content = serializeTypedChannelsMap(
23
23
  channelsMapDeclarationFile,
24
24
  packageMappings,
25
- state.channels.typesMap,
25
+ state.functions.typesMap,
26
26
  state.channels.meta
27
27
  )
28
28
  await writeFileInDir(channelsMapDeclarationFile, content)
@@ -34,13 +34,13 @@ async function action(cliOptions: PikkuCLIOptions): Promise<void> {
34
34
  logPikkuLogo()
35
35
  const cliConfig = await getPikkuCLIConfig(
36
36
  cliOptions.config,
37
- ['rootDir', 'routeDirectories', 'routesFile'],
37
+ ['rootDir', 'srcDirectories', 'httpRoutesFile'],
38
38
  cliOptions.tags,
39
39
  false
40
40
  )
41
41
  const visitState = await inspectorGlob(
42
42
  cliConfig.rootDir,
43
- cliConfig.routeDirectories,
43
+ cliConfig.srcDirectories,
44
44
  cliConfig.filters
45
45
  )
46
46
  await pikkuChannelsMap(cliConfig, visitState)
@@ -5,12 +5,9 @@ import {
5
5
  logCommandInfoAndTime,
6
6
  logPikkuLogo,
7
7
  PikkuCLIOptions,
8
+ serializeFileImports,
8
9
  writeFileInDir,
9
10
  } from '../src/utils.js'
10
- import {
11
- serializeChannels,
12
- serializeChannelMeta,
13
- } from '../src/channels/serialize-channels.js'
14
11
  import { inspectorGlob } from '../src/inspector-glob.js'
15
12
 
16
13
  export const pikkuChannels = async (
@@ -22,13 +19,21 @@ export const pikkuChannels = async (
22
19
  'Found channels',
23
20
  [visitState.channels.files.size === 0],
24
21
  async () => {
25
- const { channelsFile, packageMappings } = cliConfig
22
+ const { channelsFile, channelsMetaFile, packageMappings } = cliConfig
26
23
  const { channels } = visitState
27
- const content = [
28
- serializeChannels(channelsFile, channels.files, packageMappings),
29
- serializeChannelMeta(channels.meta),
30
- ]
31
- await writeFileInDir(channelsFile, content.join('\n\n'))
24
+ await writeFileInDir(
25
+ channelsFile,
26
+ serializeFileImports(
27
+ 'addChannel',
28
+ channelsFile,
29
+ channels.files,
30
+ packageMappings
31
+ )
32
+ )
33
+ await writeFileInDir(
34
+ channelsMetaFile,
35
+ `import { pikkuState } from '@pikku/core'\npikkuState('channel', 'meta', ${JSON.stringify(channels.meta, null, 2)})`
36
+ )
32
37
  }
33
38
  )
34
39
  }
@@ -38,12 +43,12 @@ async function action(cliOptions: PikkuCLIOptions): Promise<void> {
38
43
 
39
44
  const cliConfig = await getPikkuCLIConfig(
40
45
  cliOptions.config,
41
- ['rootDir', 'routeDirectories', 'routesFile'],
46
+ ['rootDir', 'srcDirectories', 'httpRoutesFile'],
42
47
  cliOptions.tags
43
48
  )
44
49
  const visitState = await inspectorGlob(
45
50
  cliConfig.rootDir,
46
- cliConfig.routeDirectories,
51
+ cliConfig.srcDirectories,
47
52
  cliConfig.filters
48
53
  )
49
54
  await pikkuChannels(cliConfig, visitState)
@@ -7,11 +7,11 @@ import {
7
7
  writeFileInDir,
8
8
  } from '../src/utils.js'
9
9
  import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
10
- import { serializeFetchWrapper } from '../src/http/serialize-fetch-wrapper.js'
10
+ import { serializeFetchWrapper } from '../src/serialize-fetch-wrapper.js'
11
11
 
12
12
  export const pikkuFetch = async ({
13
13
  fetchFile,
14
- routesMapDeclarationFile,
14
+ httpRoutesMapDeclarationFile,
15
15
  packageMappings,
16
16
  }: PikkuCLIConfig) => {
17
17
  await logCommandInfoAndTime(
@@ -25,7 +25,7 @@ export const pikkuFetch = async ({
25
25
 
26
26
  const routesMapDeclarationPath = getFileImportRelativePath(
27
27
  fetchFile,
28
- routesMapDeclarationFile,
28
+ httpRoutesMapDeclarationFile,
29
29
  packageMappings
30
30
  )
31
31
 
@@ -9,9 +9,9 @@ import {
9
9
  PikkuCLIOptions,
10
10
  writeFileInDir,
11
11
  } from '../src/utils.js'
12
- import { pikkuHTTP } from './pikku-http.js'
12
+ import { pikkuHTTP } from './pikku-http-routes.js'
13
13
  import { inspectorGlob } from '../src/inspector-glob.js'
14
- import { serializePikkuTypes } from '../src/core/serialize-pikku-types.js'
14
+ import { serializePikkuTypes } from '../src/serialize-pikku-types.js'
15
15
 
16
16
  export const pikkuFunctionTypes = async (
17
17
  { typesDeclarationFile: typesFile, packageMappings }: PikkuCLIConfig,
@@ -54,13 +54,13 @@ async function action(cliOptions: PikkuCLIOptions): Promise<void> {
54
54
 
55
55
  const cliConfig = await getPikkuCLIConfig(
56
56
  cliOptions.config,
57
- ['rootDir', 'routeDirectories', 'typesDeclarationFile'],
57
+ ['rootDir', 'srcDirectories', 'typesDeclarationFile'],
58
58
  cliOptions.tags
59
59
  )
60
60
 
61
61
  const visitState = await inspectorGlob(
62
62
  cliConfig.rootDir,
63
- cliConfig.routeDirectories,
63
+ cliConfig.srcDirectories,
64
64
  cliConfig.filters
65
65
  )
66
66
  await pikkuHTTP(cliConfig, visitState)
@@ -0,0 +1,35 @@
1
+ import { PikkuCLIConfig } from '../src/pikku-cli-config.js'
2
+ import { InspectorState } from '@pikku/inspector'
3
+ import {
4
+ logCommandInfoAndTime,
5
+ serializeFileImports,
6
+ writeFileInDir,
7
+ } from '../src/utils.js'
8
+
9
+ export const pikkuFunctions = async (
10
+ cliConfig: PikkuCLIConfig,
11
+ visitState: InspectorState
12
+ ) => {
13
+ return await logCommandInfoAndTime(
14
+ 'Finding Pikku functions',
15
+ 'Found Pikku functions',
16
+ [visitState.functions.files.size === 0],
17
+ async () => {
18
+ const { functionsFile, functionsMetaFile, packageMappings } = cliConfig
19
+ const { functions } = visitState
20
+ await writeFileInDir(
21
+ functionsFile,
22
+ serializeFileImports(
23
+ 'addFunction',
24
+ functionsFile,
25
+ functions.files,
26
+ packageMappings
27
+ )
28
+ )
29
+ await writeFileInDir(
30
+ functionsMetaFile,
31
+ `import { pikkuState } from '@pikku/core'\npikkuState('function', 'meta', ${JSON.stringify(functions.meta, null, 2)})`
32
+ )
33
+ }
34
+ )
35
+ }
@@ -7,26 +7,26 @@ import {
7
7
  PikkuCLIOptions,
8
8
  writeFileInDir,
9
9
  } from '../src/utils.js'
10
- import { serializeTypedRoutesMap } from '../src/http/serialize-typed-route-map.js'
10
+ import { serializeTypedRoutesMap } from '../src/serialize-typed-http-map.js'
11
11
  import { inspectorGlob } from '../src/inspector-glob.js'
12
12
 
13
13
  export const pikkuHTTPMap = async (
14
- { routesMapDeclarationFile, packageMappings }: PikkuCLIConfig,
15
- { http }: InspectorState
14
+ { httpRoutesMapDeclarationFile, packageMappings }: PikkuCLIConfig,
15
+ { http, functions }: InspectorState
16
16
  ) => {
17
17
  return await logCommandInfoAndTime(
18
- 'Creating routes map',
19
- 'Created routes map',
18
+ 'Creating HTTP map',
19
+ 'Created HTTP map',
20
20
  [http.files.size === 0],
21
21
  async () => {
22
22
  const content = serializeTypedRoutesMap(
23
- routesMapDeclarationFile,
23
+ httpRoutesMapDeclarationFile,
24
24
  packageMappings,
25
- http.typesMap,
25
+ functions.typesMap,
26
26
  http.meta,
27
27
  http.metaInputTypes
28
28
  )
29
- await writeFileInDir(routesMapDeclarationFile, content)
29
+ await writeFileInDir(httpRoutesMapDeclarationFile, content)
30
30
  }
31
31
  )
32
32
  }
@@ -35,12 +35,12 @@ async function action(cliOptions: PikkuCLIOptions): Promise<void> {
35
35
  logPikkuLogo()
36
36
  const cliConfig = await getPikkuCLIConfig(
37
37
  cliOptions.config,
38
- ['rootDir', 'routeDirectories', 'routesFile'],
38
+ ['rootDir', 'srcDirectories', 'httpRoutesFile'],
39
39
  cliOptions.tags
40
40
  )
41
41
  const visitState = await inspectorGlob(
42
42
  cliConfig.rootDir,
43
- cliConfig.routeDirectories,
43
+ cliConfig.srcDirectories,
44
44
  cliConfig.filters
45
45
  )
46
46
  await pikkuHTTPMap(cliConfig, visitState)
@@ -1,14 +1,13 @@
1
1
  import { Command } from 'commander'
2
2
  import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
3
- import { serializeHTTPRoutesMeta } from '../src/http/serialize-route-meta.js'
4
3
  import { InspectorState } from '@pikku/inspector'
5
4
  import {
6
5
  logCommandInfoAndTime,
7
6
  logPikkuLogo,
8
7
  PikkuCLIOptions,
8
+ serializeFileImports,
9
9
  writeFileInDir,
10
10
  } from '../src/utils.js'
11
- import { serializeRoutes } from '../src/http/serialize-route-imports.js'
12
11
  import { inspectorGlob } from '../src/inspector-glob.js'
13
12
 
14
13
  export const pikkuHTTP = async (
@@ -20,13 +19,21 @@ export const pikkuHTTP = async (
20
19
  'Found HTTP routes',
21
20
  [visitState.http.files.size === 0],
22
21
  async () => {
23
- const { routesFile, packageMappings } = cliConfig
22
+ const { httpRoutesFile, httpRoutesMetaFile, packageMappings } = cliConfig
24
23
  const { http } = visitState
25
- const content = [
26
- serializeRoutes(routesFile, http.files, packageMappings),
27
- serializeHTTPRoutesMeta(http.meta),
28
- ]
29
- await writeFileInDir(routesFile, content.join('\n\n'))
24
+ await writeFileInDir(
25
+ httpRoutesFile,
26
+ serializeFileImports(
27
+ 'addHTTPRoute',
28
+ httpRoutesFile,
29
+ http.files,
30
+ packageMappings
31
+ )
32
+ )
33
+ await writeFileInDir(
34
+ httpRoutesMetaFile,
35
+ `import { pikkuState } from '@pikku/core'\npikkuState('http', 'meta', ${JSON.stringify(http.meta, null, 2)})`
36
+ )
30
37
  }
31
38
  )
32
39
  }
@@ -36,12 +43,12 @@ async function action(cliOptions: PikkuCLIOptions): Promise<void> {
36
43
 
37
44
  const cliConfig = await getPikkuCLIConfig(
38
45
  cliOptions.config,
39
- ['rootDir', 'routeDirectories', 'routesFile'],
46
+ ['rootDir', 'srcDirectories', 'httpRoutesFile'],
40
47
  cliOptions.tags
41
48
  )
42
49
  const visitState = await inspectorGlob(
43
50
  cliConfig.rootDir,
44
- cliConfig.routeDirectories,
51
+ cliConfig.srcDirectories,
45
52
  cliConfig.filters
46
53
  )
47
54
  await pikkuHTTP(cliConfig, visitState)
@@ -1,6 +1,6 @@
1
1
  import { Command } from 'commander'
2
- import { serializeNextJsBackendWrapper as serializeNextBackendWrapper } from '../src/nextjs/serialize-nextjs-backend-wrapper.js'
3
- import { serializeNextJsHTTPWrapper as serializeNextHTTPWrapper } from '../src/nextjs/serialize-nextjs-http-wrapper.js'
2
+ import { serializeNextJsBackendWrapper as serializeNextBackendWrapper } from '../src/serialize-nextjs-backend-wrapper.js'
3
+ import { serializeNextJsHTTPWrapper as serializeNextHTTPWrapper } from '../src/serialize-nextjs-http-wrapper.js'
4
4
  import {
5
5
  getFileImportRelativePath,
6
6
  getPikkuFilesAndMethods,
@@ -17,8 +17,8 @@ export const pikkuNext = async (
17
17
  {
18
18
  nextBackendFile,
19
19
  nextHTTPFile,
20
- routesFile,
21
- routesMapDeclarationFile,
20
+ httpRoutesFile,
21
+ httpRoutesMapDeclarationFile,
22
22
  schemaDirectory,
23
23
  packageMappings,
24
24
  fetchFile,
@@ -69,13 +69,13 @@ export const pikkuNext = async (
69
69
 
70
70
  const routesPath = getFileImportRelativePath(
71
71
  nextBackendFile,
72
- routesFile,
72
+ httpRoutesFile,
73
73
  packageMappings
74
74
  )
75
75
 
76
76
  const routesMapDeclarationPath = getFileImportRelativePath(
77
77
  nextBackendFile,
78
- routesMapDeclarationFile,
78
+ httpRoutesMapDeclarationFile,
79
79
  packageMappings
80
80
  )
81
81
  const schemasPath = getFileImportRelativePath(
@@ -98,13 +98,13 @@ export const pikkuNext = async (
98
98
  if (nextHTTPFile) {
99
99
  const routesPath = getFileImportRelativePath(
100
100
  nextHTTPFile,
101
- routesFile,
101
+ httpRoutesFile,
102
102
  packageMappings
103
103
  )
104
104
 
105
105
  const routesMapDeclarationPath = getFileImportRelativePath(
106
106
  nextHTTPFile,
107
- routesMapDeclarationFile,
107
+ httpRoutesMapDeclarationFile,
108
108
  packageMappings
109
109
  )
110
110
 
@@ -128,7 +128,7 @@ export const action = async (options: PikkuCLIOptions): Promise<void> => {
128
128
  )
129
129
  const visitState = await inspectorGlob(
130
130
  cliConfig.rootDir,
131
- cliConfig.routeDirectories,
131
+ cliConfig.srcDirectories,
132
132
  cliConfig.filters
133
133
  )
134
134
  await pikkuNext(cliConfig, visitState, options)
@@ -5,8 +5,8 @@ import {
5
5
  PikkuCLIOptions,
6
6
  writeFileInDir,
7
7
  } from '../src/utils.js'
8
- import { generateSchemas } from '../src/schema/schema-generator.js'
9
- import { generateOpenAPISpec } from '../src/openapi/openapi-spec-generator.js'
8
+ import { generateSchemas } from '../src/schema-generator.js'
9
+ import { generateOpenAPISpec } from '../src/openapi-spec-generator.js'
10
10
  import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
11
11
  import { InspectorState } from '@pikku/inspector'
12
12
  import { stringify } from 'yaml'
@@ -14,7 +14,7 @@ import { inspectorGlob } from '../src/inspector-glob.js'
14
14
 
15
15
  export const pikkuOpenAPI = async (
16
16
  { tsconfig, openAPI }: PikkuCLIConfig,
17
- { http }: InspectorState
17
+ { http, functions }: InspectorState
18
18
  ) => {
19
19
  await logCommandInfoAndTime(
20
20
  'Creating OpenAPI spec',
@@ -24,7 +24,11 @@ export const pikkuOpenAPI = async (
24
24
  if (!openAPI?.outputFile) {
25
25
  throw new Error('openAPI is required')
26
26
  }
27
- const schemas = await generateSchemas(tsconfig, http.typesMap, http.meta)
27
+ const schemas = await generateSchemas(
28
+ tsconfig,
29
+ [http.typesMap, functions.typesMap],
30
+ http.meta
31
+ )
28
32
  const openAPISpec = await generateOpenAPISpec(
29
33
  http.meta,
30
34
  schemas,
@@ -50,12 +54,12 @@ async function action({ config, tags }: PikkuCLIOptions): Promise<void> {
50
54
  logPikkuLogo()
51
55
  const cliConfig = await getPikkuCLIConfig(
52
56
  config,
53
- ['rootDir', 'routesFile', 'openAPI', 'schemaDirectory', 'tsconfig'],
57
+ ['rootDir', 'httpRoutesFile', 'openAPI', 'schemaDirectory', 'tsconfig'],
54
58
  tags
55
59
  )
56
60
  const visitState = await inspectorGlob(
57
61
  cliConfig.rootDir,
58
- cliConfig.routeDirectories,
62
+ cliConfig.srcDirectories,
59
63
  cliConfig.filters
60
64
  )
61
65
  await pikkuOpenAPI(cliConfig, visitState)
@@ -0,0 +1,22 @@
1
+ import { PikkuCLIConfig } from '../src/pikku-cli-config.js'
2
+ import { InspectorState } from '@pikku/inspector'
3
+ import { logCommandInfoAndTime, writeFileInDir } from '../src/utils.js'
4
+
5
+ export const pikkuRPC = async (
6
+ cliConfig: PikkuCLIConfig,
7
+ visitState: InspectorState
8
+ ) => {
9
+ return await logCommandInfoAndTime(
10
+ 'Finding RPCs tasks',
11
+ 'Found rpcs',
12
+ [visitState.functions.files.size === 0],
13
+ async () => {
14
+ const { rpcFile } = cliConfig
15
+ const { rpc } = visitState
16
+ await writeFileInDir(
17
+ rpcFile,
18
+ `import { pikkuState } from '@pikku/core'\npikkuState('rpc', 'meta', ${JSON.stringify(rpc.meta, null, 2)})`
19
+ )
20
+ }
21
+ )
22
+ }
@@ -5,12 +5,10 @@ import {
5
5
  logCommandInfoAndTime,
6
6
  logPikkuLogo,
7
7
  PikkuCLIOptions,
8
+ serializeFileImports,
8
9
  writeFileInDir,
9
10
  } from '../src/utils.js'
10
- import {
11
- serializeSchedulerMeta,
12
- serializeSchedulers,
13
- } from '../src/scheduler/serialize-schedulers.js'
11
+ import { serializeSchedulerMeta } from '../src/serialize-scheduler-meta.js'
14
12
  import { inspectorGlob } from '../src/inspector-glob.js'
15
13
 
16
14
  export const pikkuScheduler = async (
@@ -22,17 +20,21 @@ export const pikkuScheduler = async (
22
20
  'Found scheduled tasks',
23
21
  [visitState.scheduledTasks.files.size === 0],
24
22
  async () => {
25
- const { schedulersFile, packageMappings } = cliConfig
23
+ const { schedulersFile, schedulersMetaFile, packageMappings } = cliConfig
26
24
  const { scheduledTasks } = visitState
27
- const content = [
28
- serializeSchedulers(
25
+ await writeFileInDir(
26
+ schedulersMetaFile,
27
+ serializeSchedulerMeta(scheduledTasks.meta)
28
+ )
29
+ await writeFileInDir(
30
+ schedulersFile,
31
+ serializeFileImports(
32
+ 'addSerializedTasks',
29
33
  schedulersFile,
30
34
  scheduledTasks.files,
31
35
  packageMappings
32
- ),
33
- serializeSchedulerMeta(scheduledTasks.meta),
34
- ]
35
- await writeFileInDir(schedulersFile, content.join('\n\n'))
36
+ )
37
+ )
36
38
  }
37
39
  )
38
40
  }
@@ -42,12 +44,12 @@ async function action(options: PikkuCLIOptions): Promise<void> {
42
44
 
43
45
  const cliConfig = await getPikkuCLIConfig(
44
46
  options.config,
45
- ['rootDir', 'routeDirectories', 'routesFile'],
47
+ ['rootDir', 'srcDirectories', 'httpRoutesFile'],
46
48
  options.tags
47
49
  )
48
50
  const visitState = await inspectorGlob(
49
51
  cliConfig.rootDir,
50
- cliConfig.routeDirectories,
52
+ cliConfig.srcDirectories,
51
53
  cliConfig.filters
52
54
  )
53
55
  await pikkuScheduler(cliConfig, visitState)