@pikku/cli 0.7.2 → 0.7.4

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 (75) hide show
  1. package/CHANGELOG.md +16 -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 +6 -21
  8. package/bin/pikku-http-map.ts +2 -32
  9. package/bin/pikku-http-routes.ts +2 -30
  10. package/bin/pikku-nextjs.ts +1 -1
  11. package/bin/pikku-openapi.ts +1 -1
  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 +2 -2
  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.d.ts +1 -1
  29. package/dist/bin/pikku-functions.js +3 -6
  30. package/dist/bin/pikku-http-map.d.ts +0 -2
  31. package/dist/bin/pikku-http-map.js +1 -16
  32. package/dist/bin/pikku-http-routes.d.ts +0 -2
  33. package/dist/bin/pikku-http-routes.js +1 -16
  34. package/dist/bin/pikku-nextjs.d.ts +1 -1
  35. package/dist/bin/pikku-nextjs.js +1 -1
  36. package/dist/bin/pikku-openapi.js +1 -1
  37. package/dist/bin/pikku-rpc-map.d.ts +3 -0
  38. package/dist/bin/pikku-rpc-map.js +8 -0
  39. package/dist/bin/pikku-rpc.d.ts +5 -1
  40. package/dist/bin/pikku-rpc.js +33 -6
  41. package/dist/bin/pikku-scheduler.d.ts +0 -2
  42. package/dist/bin/pikku-scheduler.js +1 -16
  43. package/dist/bin/pikku-schemas.d.ts +1 -1
  44. package/dist/bin/pikku-schemas.js +2 -2
  45. package/dist/bin/pikku-websocket.d.ts +1 -1
  46. package/dist/bin/pikku-websocket.js +1 -1
  47. package/dist/bin/pikku.js +0 -10
  48. package/dist/src/inspector-glob.js +1 -1
  49. package/dist/src/pikku-cli-config.d.ts +7 -5
  50. package/dist/src/pikku-cli-config.js +6 -0
  51. package/dist/src/schema-generator.js +1 -1
  52. package/dist/src/serialize-pikku-types.d.ts +1 -1
  53. package/dist/src/serialize-pikku-types.js +6 -3
  54. package/dist/src/serialize-typed-channel-map.js +2 -2
  55. package/dist/src/serialize-typed-http-map.js +1 -1
  56. package/dist/src/serialize-typed-rpc-map.d.ts +4 -0
  57. package/dist/src/serialize-typed-rpc-map.js +66 -0
  58. package/dist/src/{utils.d.ts → utils/utils.d.ts} +2 -1
  59. package/dist/src/{utils.js → utils/utils.js} +15 -1
  60. package/dist/tsconfig.tsbuildinfo +1 -1
  61. package/package.json +2 -2
  62. package/src/inspector-glob.ts +1 -1
  63. package/src/pikku-cli-config.ts +31 -5
  64. package/src/schema-generator.ts +1 -1
  65. package/src/serialize-pikku-types.ts +6 -3
  66. package/src/serialize-typed-channel-map.ts +2 -2
  67. package/src/serialize-typed-http-map.ts +1 -1
  68. package/src/serialize-typed-rpc-map.ts +105 -0
  69. package/src/{utils.ts → utils/utils.ts} +20 -2
  70. package/dist/src/serialize-typed-function-map.d.ts +0 -5
  71. package/dist/src/serialize-typed-function-map.js +0 -109
  72. package/src/serialize-typed-function-map.ts +0 -161
  73. /package/dist/src/{serialize-import-map.d.ts → utils/serialize-import-map.d.ts} +0 -0
  74. /package/dist/src/{serialize-import-map.js → utils/serialize-import-map.js} +0 -0
  75. /package/src/{serialize-import-map.ts → utils/serialize-import-map.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @pikku/cli
2
2
 
3
+ ## 0.7.4
4
+
5
+ ### Patch Changes
6
+
7
+ - 6af8a19: fix: always write functions meta data
8
+ - Updated dependencies [6af8a19]
9
+ - @pikku/core@0.7.7
10
+
11
+ ## 0.7.3
12
+
13
+ ### Patch Changes
14
+
15
+ - 46d4458: feat: we now have typed rpc calls inside of functions!
16
+ - Updated dependencies [46d4458]
17
+ - @pikku/core@0.7.5
18
+
3
19
  ## 0.7.2
4
20
 
5
21
  ### 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,31 +1,16 @@
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
- cliConfig: PikkuCLIConfig,
11
- visitState: InspectorState
6
+ { functionsMetaFile }: PikkuCLIConfig,
7
+ { functions }: InspectorState
12
8
  ) => {
13
9
  return await logCommandInfoAndTime(
14
- 'Finding Pikku functions',
15
- 'Found Pikku functions',
16
- [visitState.functions.files.size === 0],
10
+ 'Serializing Pikku functions',
11
+ 'Serialized Pikku functions',
12
+ [false],
17
13
  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
14
  await writeFileInDir(
30
15
  functionsMetaFile,
31
16
  `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,
@@ -31,26 +24,3 @@ export const pikkuHTTPMap = async (
31
24
  }
32
25
  )
33
26
  }
34
-
35
- async function action(cliOptions: PikkuCLIOptions): Promise<void> {
36
- logPikkuLogo()
37
- const cliConfig = await getPikkuCLIConfig(
38
- cliOptions.config,
39
- ['rootDir', 'srcDirectories', 'httpRoutesFile'],
40
- cliOptions.tags
41
- )
42
- const visitState = await inspectorGlob(
43
- cliConfig.rootDir,
44
- cliConfig.srcDirectories,
45
- cliConfig.filters
46
- )
47
- await pikkuHTTPMap(cliConfig, visitState)
48
- }
49
-
50
- export const routesMap = (program: Command): void => {
51
- program
52
- .command('map')
53
- .description('Generate a map of all routes to aid in type checking')
54
- .option('-c | --config <string>', 'The path to pikku cli config file')
55
- .action(action)
56
- }
@@ -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'
@@ -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',
@@ -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;
@@ -1,23 +1,8 @@
1
- import { getPikkuCLIConfig } from '../src/pikku-cli-config.js';
2
- import { logCommandInfoAndTime, logPikkuLogo, writeFileInDir, } from '../src/utils.js';
1
+ import { logCommandInfoAndTime, writeFileInDir } from '../src/utils/utils.js';
3
2
  import { serializeTypedChannelsMap } from '../src/serialize-typed-channel-map.js';
4
- import { inspectorGlob } from '../src/inspector-glob.js';
5
3
  export const pikkuChannelsMap = async ({ channelsMapDeclarationFile, packageMappings }, state) => {
6
4
  return await logCommandInfoAndTime('Creating channels map', 'Created channels map', [state.channels.files.size === 0], async () => {
7
5
  const content = serializeTypedChannelsMap(channelsMapDeclarationFile, packageMappings, state.functions.typesMap, state.channels.meta);
8
6
  await writeFileInDir(channelsMapDeclarationFile, content);
9
7
  });
10
8
  };
11
- async function action(cliOptions) {
12
- logPikkuLogo();
13
- const cliConfig = await getPikkuCLIConfig(cliOptions.config, ['rootDir', 'srcDirectories', 'httpRoutesFile'], cliOptions.tags, false);
14
- const visitState = await inspectorGlob(cliConfig.rootDir, cliConfig.srcDirectories, cliConfig.filters);
15
- await pikkuChannelsMap(cliConfig, visitState);
16
- }
17
- export const channelsMap = (program) => {
18
- program
19
- .command('channels-map')
20
- .description('Generate a map of all channels to aid in type checking')
21
- .option('-c | --config <string>', 'The path to pikku cli config file')
22
- .action(action);
23
- };
@@ -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 pikkuChannels: (cliConfig: PikkuCLIConfig, visitState: InspectorState) => Promise<boolean>;
5
- export declare const channels: (program: Command) => void;