@pikku/cli 0.7.1 → 0.7.3

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 (79) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/bin/pikku-all.ts +5 -2
  3. package/bin/pikku-channels-map.ts +2 -33
  4. package/bin/pikku-channels.ts +2 -30
  5. package/bin/pikku-fetch.ts +3 -3
  6. package/bin/pikku-function-types.ts +8 -42
  7. package/bin/pikku-functions.ts +3 -16
  8. package/bin/pikku-http-map.ts +3 -32
  9. package/bin/pikku-http-routes.ts +2 -30
  10. package/bin/pikku-nextjs.ts +1 -1
  11. package/bin/pikku-openapi.ts +4 -2
  12. package/bin/pikku-rpc-map.ts +25 -0
  13. package/bin/pikku-rpc.ts +62 -7
  14. package/bin/pikku-scheduler.ts +2 -30
  15. package/bin/pikku-schemas.ts +5 -4
  16. package/bin/pikku-websocket.ts +1 -1
  17. package/bin/pikku.ts +0 -10
  18. package/dist/bin/pikku-all.d.ts +1 -1
  19. package/dist/bin/pikku-all.js +5 -2
  20. package/dist/bin/pikku-channels-map.d.ts +0 -2
  21. package/dist/bin/pikku-channels-map.js +1 -16
  22. package/dist/bin/pikku-channels.d.ts +0 -2
  23. package/dist/bin/pikku-channels.js +1 -16
  24. package/dist/bin/pikku-fetch.d.ts +1 -1
  25. package/dist/bin/pikku-fetch.js +1 -1
  26. package/dist/bin/pikku-function-types.d.ts +2 -4
  27. package/dist/bin/pikku-function-types.js +3 -22
  28. package/dist/bin/pikku-functions.js +3 -4
  29. package/dist/bin/pikku-http-map.d.ts +0 -2
  30. package/dist/bin/pikku-http-map.js +2 -17
  31. package/dist/bin/pikku-http-routes.d.ts +0 -2
  32. package/dist/bin/pikku-http-routes.js +1 -16
  33. package/dist/bin/pikku-nextjs.d.ts +1 -1
  34. package/dist/bin/pikku-nextjs.js +1 -1
  35. package/dist/bin/pikku-openapi.js +3 -3
  36. package/dist/bin/pikku-rpc-map.d.ts +3 -0
  37. package/dist/bin/pikku-rpc-map.js +8 -0
  38. package/dist/bin/pikku-rpc.d.ts +5 -1
  39. package/dist/bin/pikku-rpc.js +33 -6
  40. package/dist/bin/pikku-scheduler.d.ts +0 -2
  41. package/dist/bin/pikku-scheduler.js +1 -16
  42. package/dist/bin/pikku-schemas.d.ts +1 -1
  43. package/dist/bin/pikku-schemas.js +4 -4
  44. package/dist/bin/pikku-websocket.d.ts +1 -1
  45. package/dist/bin/pikku-websocket.js +1 -1
  46. package/dist/bin/pikku.js +0 -10
  47. package/dist/src/inspector-glob.js +1 -1
  48. package/dist/src/openapi-spec-generator.d.ts +2 -2
  49. package/dist/src/openapi-spec-generator.js +14 -5
  50. package/dist/src/pikku-cli-config.d.ts +7 -5
  51. package/dist/src/pikku-cli-config.js +6 -0
  52. package/dist/src/schema-generator.d.ts +3 -3
  53. package/dist/src/schema-generator.js +16 -34
  54. package/dist/src/serialize-pikku-types.d.ts +1 -1
  55. package/dist/src/serialize-pikku-types.js +6 -3
  56. package/dist/src/serialize-typed-channel-map.js +2 -2
  57. package/dist/src/serialize-typed-http-map.d.ts +2 -1
  58. package/dist/src/serialize-typed-http-map.js +11 -5
  59. package/dist/src/serialize-typed-rpc-map.d.ts +4 -0
  60. package/dist/src/serialize-typed-rpc-map.js +66 -0
  61. package/dist/src/{utils.d.ts → utils/utils.d.ts} +2 -1
  62. package/dist/src/{utils.js → utils/utils.js} +15 -1
  63. package/dist/tsconfig.tsbuildinfo +1 -1
  64. package/package.json +3 -3
  65. package/src/inspector-glob.ts +1 -1
  66. package/src/openapi-spec-generator.ts +23 -4
  67. package/src/pikku-cli-config.ts +31 -5
  68. package/src/schema-generator.ts +18 -36
  69. package/src/serialize-pikku-types.ts +6 -3
  70. package/src/serialize-typed-channel-map.ts +2 -2
  71. package/src/serialize-typed-http-map.ts +19 -3
  72. package/src/serialize-typed-rpc-map.ts +105 -0
  73. package/src/{utils.ts → utils/utils.ts} +20 -2
  74. package/dist/src/serialize-typed-function-map.d.ts +0 -4
  75. package/dist/src/serialize-typed-function-map.js +0 -107
  76. package/src/serialize-typed-function-map.ts +0 -151
  77. /package/dist/src/{serialize-import-map.d.ts → utils/serialize-import-map.d.ts} +0 -0
  78. /package/dist/src/{serialize-import-map.js → utils/serialize-import-map.js} +0 -0
  79. /package/src/{serialize-import-map.ts → utils/serialize-import-map.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # @pikku/cli
2
2
 
3
+ ## 0.7.3
4
+
5
+ ### Patch Changes
6
+
7
+ - 46d4458: feat: we now have typed rpc calls inside of functions!
8
+ - Updated dependencies [46d4458]
9
+ - @pikku/core@0.7.5
10
+
11
+ ## 0.7.2
12
+
13
+ ### Patch Changes
14
+
15
+ - 598588f: fix: generating output schemas from function meta
16
+ - Updated dependencies [598588f]
17
+ - @pikku/inspector@0.7.4
18
+ - @pikku/core@0.7.4
19
+
3
20
  ## 0.7.1
4
21
 
5
22
  ### Patch Changes
package/bin/pikku-all.ts CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  logPikkuLogo,
6
6
  PikkuCLIOptions,
7
7
  writeFileInDir,
8
- } from '../src/utils.js'
8
+ } from '../src/utils/utils.js'
9
9
  import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
10
10
  import { pikkuHTTP } from './pikku-http-routes.js'
11
11
  import { pikkuFunctionTypes } from './pikku-function-types.js'
@@ -23,6 +23,7 @@ import { inspectorGlob } from '../src/inspector-glob.js'
23
23
  import chokidar from 'chokidar'
24
24
  import { pikkuFunctions } from './pikku-functions.js'
25
25
  import { pikkuRPC } from './pikku-rpc.js'
26
+ import { pikkuRPCMap } from './pikku-rpc-map.js'
26
27
 
27
28
  const runAll = async (cliConfig: PikkuCLIConfig, options: PikkuCLIOptions) => {
28
29
  const metaImports: string[] = []
@@ -67,7 +68,9 @@ const runAll = async (cliConfig: PikkuCLIConfig, options: PikkuCLIOptions) => {
67
68
  addImport(cliConfig.functionsFile, 'events')
68
69
 
69
70
  await pikkuRPC(cliConfig, visitState)
70
- addImport(cliConfig.rpcFile, 'meta')
71
+ await pikkuRPCMap(cliConfig, visitState)
72
+ addImport(cliConfig.rpcMetaFile, 'meta')
73
+ addImport(cliConfig.rpcFile, 'events')
71
74
 
72
75
  const routes = await pikkuHTTP(cliConfig, visitState)
73
76
  if (routes) {
@@ -1,14 +1,7 @@
1
- import { Command } from 'commander'
2
- import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
1
+ import { PikkuCLIConfig } from '../src/pikku-cli-config.js'
3
2
  import { InspectorState } from '@pikku/inspector'
4
- import {
5
- logCommandInfoAndTime,
6
- logPikkuLogo,
7
- PikkuCLIOptions,
8
- writeFileInDir,
9
- } from '../src/utils.js'
3
+ import { logCommandInfoAndTime, writeFileInDir } from '../src/utils/utils.js'
10
4
  import { serializeTypedChannelsMap } from '../src/serialize-typed-channel-map.js'
11
- import { inspectorGlob } from '../src/inspector-glob.js'
12
5
 
13
6
  export const pikkuChannelsMap = async (
14
7
  { channelsMapDeclarationFile, packageMappings }: PikkuCLIConfig,
@@ -29,27 +22,3 @@ export const pikkuChannelsMap = async (
29
22
  }
30
23
  )
31
24
  }
32
-
33
- async function action(cliOptions: PikkuCLIOptions): Promise<void> {
34
- logPikkuLogo()
35
- const cliConfig = await getPikkuCLIConfig(
36
- cliOptions.config,
37
- ['rootDir', 'srcDirectories', 'httpRoutesFile'],
38
- cliOptions.tags,
39
- false
40
- )
41
- const visitState = await inspectorGlob(
42
- cliConfig.rootDir,
43
- cliConfig.srcDirectories,
44
- cliConfig.filters
45
- )
46
- await pikkuChannelsMap(cliConfig, visitState)
47
- }
48
-
49
- export const channelsMap = (program: Command): void => {
50
- program
51
- .command('channels-map')
52
- .description('Generate a map of all channels to aid in type checking')
53
- .option('-c | --config <string>', 'The path to pikku cli config file')
54
- .action(action)
55
- }
@@ -1,14 +1,10 @@
1
- import { Command } from 'commander'
2
- import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
1
+ import { PikkuCLIConfig } from '../src/pikku-cli-config.js'
3
2
  import { InspectorState } from '@pikku/inspector'
4
3
  import {
5
4
  logCommandInfoAndTime,
6
- logPikkuLogo,
7
- PikkuCLIOptions,
8
5
  serializeFileImports,
9
6
  writeFileInDir,
10
- } from '../src/utils.js'
11
- import { inspectorGlob } from '../src/inspector-glob.js'
7
+ } from '../src/utils/utils.js'
12
8
 
13
9
  export const pikkuChannels = async (
14
10
  cliConfig: PikkuCLIConfig,
@@ -37,27 +33,3 @@ export const pikkuChannels = async (
37
33
  }
38
34
  )
39
35
  }
40
-
41
- async function action(cliOptions: PikkuCLIOptions): Promise<void> {
42
- logPikkuLogo()
43
-
44
- const cliConfig = await getPikkuCLIConfig(
45
- cliOptions.config,
46
- ['rootDir', 'srcDirectories', 'httpRoutesFile'],
47
- cliOptions.tags
48
- )
49
- const visitState = await inspectorGlob(
50
- cliConfig.rootDir,
51
- cliConfig.srcDirectories,
52
- cliConfig.filters
53
- )
54
- await pikkuChannels(cliConfig, visitState)
55
- }
56
-
57
- export const channels = (program: Command): void => {
58
- program
59
- .command('channels')
60
- .description('Find all channels to import')
61
- .option('-c | --config <string>', 'The path to pikku cli config file')
62
- .action(action)
63
- }
@@ -1,13 +1,13 @@
1
1
  import { Command } from 'commander'
2
+ import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
3
+ import { serializeFetchWrapper } from '../src/serialize-fetch-wrapper.js'
2
4
  import {
3
5
  getFileImportRelativePath,
4
6
  logCommandInfoAndTime,
5
7
  logPikkuLogo,
6
8
  PikkuCLIOptions,
7
9
  writeFileInDir,
8
- } from '../src/utils.js'
9
- import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
10
- import { serializeFetchWrapper } from '../src/serialize-fetch-wrapper.js'
10
+ } from '../src/utils/utils.js'
11
11
 
12
12
  export const pikkuFetch = async ({
13
13
  fetchFile,
@@ -1,20 +1,20 @@
1
- import { Command } from 'commander'
2
- import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
1
+ import { PikkuCLIConfig } from '../src/pikku-cli-config.js'
3
2
  import { InspectorState } from '@pikku/inspector'
4
3
  import {
5
4
  getFileImportRelativePath,
6
5
  getPikkuFilesAndMethods,
7
6
  logCommandInfoAndTime,
8
- logPikkuLogo,
9
7
  PikkuCLIOptions,
10
8
  writeFileInDir,
11
- } from '../src/utils.js'
12
- import { pikkuHTTP } from './pikku-http-routes.js'
13
- import { inspectorGlob } from '../src/inspector-glob.js'
9
+ } from '../src/utils/utils.js'
14
10
  import { serializePikkuTypes } from '../src/serialize-pikku-types.js'
15
11
 
16
12
  export const pikkuFunctionTypes = async (
17
- { typesDeclarationFile: typesFile, packageMappings }: PikkuCLIConfig,
13
+ {
14
+ typesDeclarationFile: typesFile,
15
+ packageMappings,
16
+ rpcMapDeclarationFile,
17
+ }: PikkuCLIConfig,
18
18
  options: PikkuCLIOptions,
19
19
  visitState: InspectorState
20
20
  ) => {
@@ -42,43 +42,9 @@ export const pikkuFunctionTypes = async (
42
42
  `import type { ${singletonServicesType.type} } from '${getFileImportRelativePath(typesFile, singletonServicesType.typePath, packageMappings)}'`,
43
43
  singletonServicesType.type,
44
44
  `import type { ${sessionServicesType.type} } from '${getFileImportRelativePath(typesFile, sessionServicesType.typePath, packageMappings)}'`,
45
- sessionServicesType.type
45
+ `import type { TypedPikkuRPC } from '${getFileImportRelativePath(typesFile, rpcMapDeclarationFile, packageMappings)}'`
46
46
  )
47
47
  await writeFileInDir(typesFile, content)
48
48
  }
49
49
  )
50
50
  }
51
-
52
- async function action(cliOptions: PikkuCLIOptions): Promise<void> {
53
- logPikkuLogo()
54
-
55
- const cliConfig = await getPikkuCLIConfig(
56
- cliOptions.config,
57
- ['rootDir', 'srcDirectories', 'typesDeclarationFile'],
58
- cliOptions.tags
59
- )
60
-
61
- const visitState = await inspectorGlob(
62
- cliConfig.rootDir,
63
- cliConfig.srcDirectories,
64
- cliConfig.filters
65
- )
66
- await pikkuHTTP(cliConfig, visitState)
67
- }
68
-
69
- export const functionTypes = (program: Command): void => {
70
- program
71
- .command('types')
72
- .description('Generate the core API')
73
- .option('-ct | --pikku-config-type', 'The type of your pikku config object')
74
- .option(
75
- '-ss | --singleton-services-factory-type',
76
- 'The type of your singleton services factory'
77
- )
78
- .option(
79
- '-se | --session-services-factory-type',
80
- 'The type of your session services factory'
81
- )
82
- .option('-c | --config <string>', 'The path to pikku cli config file')
83
- .action(action)
84
- }
@@ -1,10 +1,6 @@
1
1
  import { PikkuCLIConfig } from '../src/pikku-cli-config.js'
2
2
  import { InspectorState } from '@pikku/inspector'
3
- import {
4
- logCommandInfoAndTime,
5
- serializeFileImports,
6
- writeFileInDir,
7
- } from '../src/utils.js'
3
+ import { logCommandInfoAndTime, writeFileInDir } from '../src/utils/utils.js'
8
4
 
9
5
  export const pikkuFunctions = async (
10
6
  cliConfig: PikkuCLIConfig,
@@ -13,19 +9,10 @@ export const pikkuFunctions = async (
13
9
  return await logCommandInfoAndTime(
14
10
  'Finding Pikku functions',
15
11
  'Found Pikku functions',
16
- [visitState.functions.files.size === 0],
12
+ [true],
17
13
  async () => {
18
- const { functionsFile, functionsMetaFile, packageMappings } = cliConfig
14
+ const { functionsMetaFile } = cliConfig
19
15
  const { functions } = visitState
20
- await writeFileInDir(
21
- functionsFile,
22
- serializeFileImports(
23
- 'addFunction',
24
- functionsFile,
25
- functions.files,
26
- packageMappings
27
- )
28
- )
29
16
  await writeFileInDir(
30
17
  functionsMetaFile,
31
18
  `import { pikkuState } from '@pikku/core'\npikkuState('function', 'meta', ${JSON.stringify(functions.meta, null, 2)})`
@@ -1,14 +1,7 @@
1
- import { Command } from 'commander'
2
- import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
1
+ import { PikkuCLIConfig } from '../src/pikku-cli-config.js'
3
2
  import { InspectorState } from '@pikku/inspector'
4
- import {
5
- logCommandInfoAndTime,
6
- logPikkuLogo,
7
- PikkuCLIOptions,
8
- writeFileInDir,
9
- } from '../src/utils.js'
3
+ import { logCommandInfoAndTime, writeFileInDir } from '../src/utils/utils.js'
10
4
  import { serializeTypedRoutesMap } from '../src/serialize-typed-http-map.js'
11
- import { inspectorGlob } from '../src/inspector-glob.js'
12
5
 
13
6
  export const pikkuHTTPMap = async (
14
7
  { httpRoutesMapDeclarationFile, packageMappings }: PikkuCLIConfig,
@@ -23,6 +16,7 @@ export const pikkuHTTPMap = async (
23
16
  httpRoutesMapDeclarationFile,
24
17
  packageMappings,
25
18
  functions.typesMap,
19
+ functions.meta,
26
20
  http.meta,
27
21
  http.metaInputTypes
28
22
  )
@@ -30,26 +24,3 @@ export const pikkuHTTPMap = async (
30
24
  }
31
25
  )
32
26
  }
33
-
34
- async function action(cliOptions: PikkuCLIOptions): Promise<void> {
35
- logPikkuLogo()
36
- const cliConfig = await getPikkuCLIConfig(
37
- cliOptions.config,
38
- ['rootDir', 'srcDirectories', 'httpRoutesFile'],
39
- cliOptions.tags
40
- )
41
- const visitState = await inspectorGlob(
42
- cliConfig.rootDir,
43
- cliConfig.srcDirectories,
44
- cliConfig.filters
45
- )
46
- await pikkuHTTPMap(cliConfig, visitState)
47
- }
48
-
49
- export const routesMap = (program: Command): void => {
50
- program
51
- .command('map')
52
- .description('Generate a map of all routes to aid in type checking')
53
- .option('-c | --config <string>', 'The path to pikku cli config file')
54
- .action(action)
55
- }
@@ -1,14 +1,10 @@
1
- import { Command } from 'commander'
2
- import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
1
+ import { PikkuCLIConfig } from '../src/pikku-cli-config.js'
3
2
  import { InspectorState } from '@pikku/inspector'
4
3
  import {
5
4
  logCommandInfoAndTime,
6
- logPikkuLogo,
7
- PikkuCLIOptions,
8
5
  serializeFileImports,
9
6
  writeFileInDir,
10
- } from '../src/utils.js'
11
- import { inspectorGlob } from '../src/inspector-glob.js'
7
+ } from '../src/utils/utils.js'
12
8
 
13
9
  export const pikkuHTTP = async (
14
10
  cliConfig: PikkuCLIConfig,
@@ -37,27 +33,3 @@ export const pikkuHTTP = async (
37
33
  }
38
34
  )
39
35
  }
40
-
41
- async function action(cliOptions: PikkuCLIOptions): Promise<void> {
42
- logPikkuLogo()
43
-
44
- const cliConfig = await getPikkuCLIConfig(
45
- cliOptions.config,
46
- ['rootDir', 'srcDirectories', 'httpRoutesFile'],
47
- cliOptions.tags
48
- )
49
- const visitState = await inspectorGlob(
50
- cliConfig.rootDir,
51
- cliConfig.srcDirectories,
52
- cliConfig.filters
53
- )
54
- await pikkuHTTP(cliConfig, visitState)
55
- }
56
-
57
- export const routes = (program: Command): void => {
58
- program
59
- .command('routes')
60
- .description('Find all routes to import')
61
- .option('-c | --config <string>', 'The path to pikku cli config file')
62
- .action(action)
63
- }
@@ -8,7 +8,7 @@ import {
8
8
  logPikkuLogo,
9
9
  PikkuCLIOptions,
10
10
  writeFileInDir,
11
- } from '../src/utils.js'
11
+ } from '../src/utils/utils.js'
12
12
  import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
13
13
  import { InspectorState } from '@pikku/inspector'
14
14
  import { inspectorGlob } from '../src/inspector-glob.js'
@@ -4,7 +4,7 @@ import {
4
4
  logPikkuLogo,
5
5
  PikkuCLIOptions,
6
6
  writeFileInDir,
7
- } from '../src/utils.js'
7
+ } from '../src/utils/utils.js'
8
8
  import { generateSchemas } from '../src/schema-generator.js'
9
9
  import { generateOpenAPISpec } from '../src/openapi-spec-generator.js'
10
10
  import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
@@ -26,10 +26,12 @@ export const pikkuOpenAPI = async (
26
26
  }
27
27
  const schemas = await generateSchemas(
28
28
  tsconfig,
29
- [http.typesMap, functions.typesMap],
29
+ functions.typesMap,
30
+ functions.meta,
30
31
  http.meta
31
32
  )
32
33
  const openAPISpec = await generateOpenAPISpec(
34
+ functions.meta,
33
35
  http.meta,
34
36
  schemas,
35
37
  openAPI.additionalInfo
@@ -0,0 +1,25 @@
1
+ import { PikkuCLIConfig } from '../src/pikku-cli-config.js'
2
+ import { InspectorState } from '@pikku/inspector'
3
+ import { logCommandInfoAndTime, writeFileInDir } from '../src/utils/utils.js'
4
+ import { serializeTypedRPCMap } from '../src/serialize-typed-rpc-map.js'
5
+
6
+ export const pikkuRPCMap = async (
7
+ { rpcMapDeclarationFile, packageMappings }: PikkuCLIConfig,
8
+ { functions, rpc }: InspectorState
9
+ ) => {
10
+ return await logCommandInfoAndTime(
11
+ 'Creating RPC map',
12
+ 'Created RPC map',
13
+ [rpc.files.size === 0],
14
+ async () => {
15
+ const content = serializeTypedRPCMap(
16
+ rpcMapDeclarationFile,
17
+ packageMappings,
18
+ functions.typesMap,
19
+ functions.meta,
20
+ rpc.meta
21
+ )
22
+ await writeFileInDir(rpcMapDeclarationFile, content)
23
+ }
24
+ )
25
+ }
package/bin/pikku-rpc.ts CHANGED
@@ -1,20 +1,75 @@
1
1
  import { PikkuCLIConfig } from '../src/pikku-cli-config.js'
2
2
  import { InspectorState } from '@pikku/inspector'
3
- import { logCommandInfoAndTime, writeFileInDir } from '../src/utils.js'
3
+ import {
4
+ getFileImportRelativePath,
5
+ logCommandInfoAndTime,
6
+ writeFileInDir,
7
+ } from '../src/utils/utils.js'
8
+
9
+ export const serializeRPCImports = (
10
+ outputPath: string,
11
+ functionsMap: Map<string, { path: string; exportedName: string }>,
12
+ packageMappings: Record<string, string> = {}
13
+ ) => {
14
+ const serializedImports: string[] = [
15
+ `/* Import and register RPCs */`,
16
+ `import { addFunction } from '@pikku/core'`,
17
+ ]
18
+
19
+ const serializedRegistrations: string[] = []
20
+
21
+ // Sort by function name for consistent output
22
+ const sortedEntries = Array.from(functionsMap.entries()).sort((a, b) =>
23
+ a[0].localeCompare(b[0])
24
+ )
25
+
26
+ for (const [name, { path, exportedName }] of sortedEntries) {
27
+ const filePath = getFileImportRelativePath(
28
+ outputPath,
29
+ path,
30
+ packageMappings
31
+ )
32
+
33
+ // For directly exported functions, we can just import and register them
34
+ if (name === exportedName) {
35
+ serializedImports.push(`import { ${exportedName} } from '${filePath}'`)
36
+ serializedRegistrations.push(
37
+ `addFunction('${name}', { func: ${exportedName} })`
38
+ )
39
+ }
40
+ // For renamed functions, we need to import and alias them
41
+ else {
42
+ serializedImports.push(
43
+ `import { ${exportedName} as ${name} } from '${filePath}'`
44
+ )
45
+ serializedRegistrations.push(`addFunction('${name}', ${name})`)
46
+ }
47
+ }
48
+
49
+ // Add a blank line between imports and registrations
50
+ if (serializedImports.length > 0 && serializedRegistrations.length > 0) {
51
+ serializedImports.push('')
52
+ }
53
+
54
+ // Combine the imports and registrations
55
+ return [...serializedImports, ...serializedRegistrations].join('\n')
56
+ }
4
57
 
5
58
  export const pikkuRPC = async (
6
- cliConfig: PikkuCLIConfig,
7
- visitState: InspectorState
59
+ { rpcFile, rpcMetaFile, packageMappings }: PikkuCLIConfig,
60
+ { rpc }: InspectorState
8
61
  ) => {
9
62
  return await logCommandInfoAndTime(
10
63
  'Finding RPCs tasks',
11
- 'Found rpcs',
12
- [visitState.functions.files.size === 0],
64
+ 'Found RPCs',
65
+ [rpc.files.size === 0],
13
66
  async () => {
14
- const { rpcFile } = cliConfig
15
- const { rpc } = visitState
16
67
  await writeFileInDir(
17
68
  rpcFile,
69
+ serializeRPCImports(rpcFile, rpc.files, packageMappings)
70
+ )
71
+ await writeFileInDir(
72
+ rpcMetaFile,
18
73
  `import { pikkuState } from '@pikku/core'\npikkuState('rpc', 'meta', ${JSON.stringify(rpc.meta, null, 2)})`
19
74
  )
20
75
  }
@@ -1,15 +1,11 @@
1
- import { Command } from 'commander'
2
- import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
1
+ import { PikkuCLIConfig } from '../src/pikku-cli-config.js'
3
2
  import { InspectorState } from '@pikku/inspector'
4
3
  import {
5
4
  logCommandInfoAndTime,
6
- logPikkuLogo,
7
- PikkuCLIOptions,
8
5
  serializeFileImports,
9
6
  writeFileInDir,
10
- } from '../src/utils.js'
7
+ } from '../src/utils/utils.js'
11
8
  import { serializeSchedulerMeta } from '../src/serialize-scheduler-meta.js'
12
- import { inspectorGlob } from '../src/inspector-glob.js'
13
9
 
14
10
  export const pikkuScheduler = async (
15
11
  cliConfig: PikkuCLIConfig,
@@ -38,27 +34,3 @@ export const pikkuScheduler = async (
38
34
  }
39
35
  )
40
36
  }
41
-
42
- async function action(options: PikkuCLIOptions): Promise<void> {
43
- logPikkuLogo()
44
-
45
- const cliConfig = await getPikkuCLIConfig(
46
- options.config,
47
- ['rootDir', 'srcDirectories', 'httpRoutesFile'],
48
- options.tags
49
- )
50
- const visitState = await inspectorGlob(
51
- cliConfig.rootDir,
52
- cliConfig.srcDirectories,
53
- cliConfig.filters
54
- )
55
- await pikkuScheduler(cliConfig, visitState)
56
- }
57
-
58
- export const schedules = (program: Command): void => {
59
- program
60
- .command('scheduler')
61
- .description('Find all scheduled tasks to import')
62
- .option('-c | --config <string>', 'The path to pikku cli config file')
63
- .action(action)
64
- }
@@ -3,12 +3,12 @@ import { saveSchemas, generateSchemas } from '../src/schema-generator.js'
3
3
 
4
4
  import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
5
5
  import { InspectorState } from '@pikku/inspector'
6
- import { logCommandInfoAndTime, logPikkuLogo } from '../src/utils.js'
6
+ import { logCommandInfoAndTime, logPikkuLogo } from '../src/utils/utils.js'
7
7
  import { inspectorGlob } from '../src/inspector-glob.js'
8
8
 
9
9
  export const pikkuSchemas = async (
10
10
  { tsconfig, schemaDirectory, supportsImportAttributes }: PikkuCLIConfig,
11
- { functions, http, channels }: InspectorState
11
+ { functions, http }: InspectorState
12
12
  ) => {
13
13
  return await logCommandInfoAndTime(
14
14
  'Creating schemas',
@@ -17,14 +17,15 @@ export const pikkuSchemas = async (
17
17
  async () => {
18
18
  const schemas = await generateSchemas(
19
19
  tsconfig,
20
- [functions.typesMap, http.typesMap, channels.typesMap],
20
+ functions.typesMap,
21
+ functions.meta,
21
22
  http.meta
22
23
  )
23
24
  await saveSchemas(
24
25
  schemaDirectory,
25
26
  schemas,
26
27
  functions.typesMap,
27
- http.meta,
28
+ functions.meta,
28
29
  supportsImportAttributes
29
30
  )
30
31
  }
@@ -5,7 +5,7 @@ import {
5
5
  logPikkuLogo,
6
6
  PikkuCLIOptions,
7
7
  writeFileInDir,
8
- } from '../src/utils.js'
8
+ } from '../src/utils/utils.js'
9
9
  import { getPikkuCLIConfig, PikkuCLIConfig } from '../src/pikku-cli-config.js'
10
10
  import { serializeWebsocketWrapper } from '../src/serialize-websocket-wrapper.js'
11
11
 
package/bin/pikku.ts CHANGED
@@ -1,26 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import { Command } from 'commander'
3
3
  import { schemas } from './pikku-schemas.js'
4
- import { routes } from './pikku-http-routes.js'
5
4
  import { nextjs } from './pikku-nextjs.js'
6
5
  import { all } from './pikku-all.js'
7
- import { functionTypes } from './pikku-function-types.js'
8
- import { routesMap } from './pikku-http-map.js'
9
6
  import { fetch } from './pikku-fetch.js'
10
- import { channels } from './pikku-channels.js'
11
- import { schedules } from './pikku-scheduler.js'
12
7
 
13
8
  const program = new Command('pikku')
14
9
  program.usage('[command]')
15
10
 
16
11
  all(program)
17
- routes(program)
18
- routesMap(program)
19
- functionTypes(program)
20
12
  schemas(program)
21
13
  nextjs(program)
22
14
  fetch(program)
23
- channels(program)
24
- schedules(program)
25
15
 
26
16
  program.parse(process.argv)
@@ -1,4 +1,4 @@
1
1
  import { Command } from 'commander';
2
- import { PikkuCLIOptions } from '../src/utils.js';
2
+ import { PikkuCLIOptions } from '../src/utils/utils.js';
3
3
  export declare const action: (options: PikkuCLIOptions) => Promise<void>;
4
4
  export declare const all: (program: Command) => void;
@@ -1,4 +1,4 @@
1
- import { getFileImportRelativePath, logInfo, logPikkuLogo, writeFileInDir, } from '../src/utils.js';
1
+ import { getFileImportRelativePath, logInfo, logPikkuLogo, writeFileInDir, } from '../src/utils/utils.js';
2
2
  import { getPikkuCLIConfig } from '../src/pikku-cli-config.js';
3
3
  import { pikkuHTTP } from './pikku-http-routes.js';
4
4
  import { pikkuFunctionTypes } from './pikku-function-types.js';
@@ -16,6 +16,7 @@ import { inspectorGlob } from '../src/inspector-glob.js';
16
16
  import chokidar from 'chokidar';
17
17
  import { pikkuFunctions } from './pikku-functions.js';
18
18
  import { pikkuRPC } from './pikku-rpc.js';
19
+ import { pikkuRPCMap } from './pikku-rpc-map.js';
19
20
  const runAll = async (cliConfig, options) => {
20
21
  const metaImports = [];
21
22
  const imports = [];
@@ -47,7 +48,9 @@ const runAll = async (cliConfig, options) => {
47
48
  addImport(cliConfig.functionsMetaFile, 'meta');
48
49
  addImport(cliConfig.functionsFile, 'events');
49
50
  await pikkuRPC(cliConfig, visitState);
50
- addImport(cliConfig.rpcFile, 'meta');
51
+ await pikkuRPCMap(cliConfig, visitState);
52
+ addImport(cliConfig.rpcMetaFile, 'meta');
53
+ addImport(cliConfig.rpcFile, 'events');
51
54
  const routes = await pikkuHTTP(cliConfig, visitState);
52
55
  if (routes) {
53
56
  await pikkuHTTPMap(cliConfig, visitState);
@@ -1,5 +1,3 @@
1
- import { Command } from 'commander';
2
1
  import { PikkuCLIConfig } from '../src/pikku-cli-config.js';
3
2
  import { InspectorState } from '@pikku/inspector';
4
3
  export declare const pikkuChannelsMap: ({ channelsMapDeclarationFile, packageMappings }: PikkuCLIConfig, state: InspectorState) => Promise<boolean>;
5
- export declare const channelsMap: (program: Command) => void;