polen 0.3.1 → 0.4.0

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":""}
@@ -0,0 +1,78 @@
1
+ import { Command } from '@molt/command';
2
+ import { Fs, Manifest, Name, Path, Str } from '@wollybeard/kit';
3
+ import consola from 'consola';
4
+ import { z } from 'zod';
5
+ import { $ } from 'zx';
6
+ const Examples = z.enum([`github`, `pokemon`]);
7
+ const args = Command
8
+ .create()
9
+ .parameter(`name`, z.string().default(() => Name.generate()).describe(`Defaults to a random name.`))
10
+ .parameter(`link`, z.boolean().default(false).describe(`When installing polen, do so as a link. You must have Polen globally linked on your machine.`))
11
+ .parameter(`example`, Examples.default(`pokemon`).describe(`The example to use to scaffold your project.`))
12
+ .parse();
13
+ const cwd = process.cwd();
14
+ const isCwdEmpty = await Fs.isEmptyDir(cwd);
15
+ const name = Str.Case.kebab(args.name);
16
+ const projectRoot = isCwdEmpty ? cwd : Path.join(cwd, name);
17
+ if (!isCwdEmpty) {
18
+ const isProjectRootExists = await Fs.exists(projectRoot);
19
+ const isEmpty = isProjectRootExists && await Fs.isEmptyDir(projectRoot);
20
+ if (isProjectRootExists && !isEmpty) {
21
+ consola.error(`Project root of name "${name}" already exists`);
22
+ process.exit(1);
23
+ }
24
+ consola.info(`creating your project in ./${name}`);
25
+ }
26
+ else {
27
+ consola.info(`Current working directory is empty, creating your project here`);
28
+ }
29
+ // Scaffold Example
30
+ // Pull an example from the Polen repository
31
+ // Copy all the files to the project root
32
+ const repository = `https://github.com/the-guild-org/polen`;
33
+ const repoExampleDir = `examples/${args.example}`;
34
+ consola.info(`Scaffolding "${args.example}" example...`);
35
+ try {
36
+ // Create temporary directory
37
+ const { stdout: tmpDir } = await $ `mktemp -d`;
38
+ const tmpDirPath = tmpDir.trim();
39
+ try {
40
+ // Clone only the specific example directory using sparse checkout
41
+ await $({ quiet: true }) `git clone --depth 1 --filter=blob:none --sparse ${repository} ${tmpDirPath}`;
42
+ await $ `cd ${tmpDirPath} && git sparse-checkout set ${repoExampleDir}`;
43
+ const sourceExamplePath = Path.join(tmpDirPath, repoExampleDir);
44
+ // Verify the example exists
45
+ if (!await Fs.exists(sourceExamplePath)) {
46
+ throw new Error(`Example "${args.example}" not found in the repository`);
47
+ }
48
+ // Create project root directory if needed
49
+ await $ `mkdir -p ${projectRoot}`;
50
+ // Copy files excluding build artifacts and dependencies using rsync
51
+ await $ `rsync -av --exclude="node_modules/" --exclude="dist/" --exclude=".bundle-explorer/" --exclude="pnpm-lock.yaml" ${sourceExamplePath}/ ${projectRoot}/`;
52
+ consola.success(`Done`);
53
+ if (!isCwdEmpty) {
54
+ consola.success(`Your project is ready! Get Started:`);
55
+ }
56
+ }
57
+ finally {
58
+ // Clean up temporary directory
59
+ await $ `rm -rf ${tmpDirPath}`;
60
+ }
61
+ }
62
+ catch (error) {
63
+ consola.error(`Failed to scaffold example: ${error instanceof Error ? error.message : String(error)}`);
64
+ process.exit(1);
65
+ }
66
+ // End Scaffold Example
67
+ // --------------------
68
+ await Manifest.resource.update((manifest) => {
69
+ manifest.name = name;
70
+ manifest.description = `A new project`;
71
+ manifest.packageManager = `pnpm@10.11.0`;
72
+ }, projectRoot);
73
+ if (args.link) {
74
+ await $ `pnpm link polen`;
75
+ }
76
+ console.log(``);
77
+ console.log(` cd ./${Path.relative(cwd, projectRoot)} && pnpm dev`);
78
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,7 @@ import { Command } from '@molt/command';
14
14
  import { Err, Fs, Json, Path, Rec } from '@wollybeard/kit';
15
15
  import { homedir } from 'node:os';
16
16
  import { z } from 'zod';
17
- import { defineConfig } from '../../create-configuration.js';
17
+ import { defineConfig } from '../../api/define-config.js';
18
18
  const args = Command.create()
19
19
  .parameter(`--introspection-headers --inh`, z
20
20
  .string()
@@ -1 +1 @@
1
- {"version":3,"file":"open.js","sourceRoot":"","sources":["../../../src/cli/commands/open.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"open.js","sourceRoot":"","sources":["../../../src/cli/commands/open.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "polen",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "type": "module",
5
5
  "description": "A framework for delightful GraphQL developer portals",
6
6
  "author": {
@@ -60,7 +60,7 @@
60
60
  "@swc/core": "^1.11.29",
61
61
  "@types/jsesc": "^3.0.3",
62
62
  "@vitejs/plugin-react": "^4.4.1",
63
- "@wollybeard/kit": "^0.24.0",
63
+ "@wollybeard/kit": "^0.25.0",
64
64
  "@wollybeard/projector": "^0.1.0",
65
65
  "ansis": "^4.0.0",
66
66
  "consola": "^3.4.2",
@@ -0,0 +1,98 @@
1
+ import { Command } from '@molt/command'
2
+ import { Fs, Manifest, Name, Path, Str } from '@wollybeard/kit'
3
+ import consola from 'consola'
4
+ import { z } from 'zod'
5
+ import { $ } from 'zx'
6
+
7
+ const Examples = z.enum([`github`, `pokemon`])
8
+
9
+ const args = Command
10
+ .create()
11
+ .parameter(`name`, z.string().default(() => Name.generate()).describe(`Defaults to a random name.`))
12
+ .parameter(
13
+ `link`,
14
+ z.boolean().default(false).describe(
15
+ `When installing polen, do so as a link. You must have Polen globally linked on your machine.`,
16
+ ),
17
+ )
18
+ .parameter(`example`, Examples.default(`pokemon`).describe(`The example to use to scaffold your project.`))
19
+ .parse()
20
+
21
+ const cwd = process.cwd()
22
+ const isCwdEmpty = await Fs.isEmptyDir(cwd)
23
+ const name = Str.Case.kebab(args.name)
24
+ const projectRoot = isCwdEmpty ? cwd : Path.join(cwd, name)
25
+
26
+ if (!isCwdEmpty) {
27
+ const isProjectRootExists = await Fs.exists(projectRoot)
28
+ const isEmpty = isProjectRootExists && await Fs.isEmptyDir(projectRoot)
29
+ if (isProjectRootExists && !isEmpty) {
30
+ consola.error(`Project root of name "${name}" already exists`)
31
+ process.exit(1)
32
+ }
33
+ consola.info(`creating your project in ./${name}`)
34
+ } else {
35
+ consola.info(`Current working directory is empty, creating your project here`)
36
+ }
37
+
38
+ // Scaffold Example
39
+
40
+ // Pull an example from the Polen repository
41
+ // Copy all the files to the project root
42
+ const repository = `https://github.com/the-guild-org/polen`
43
+ const repoExampleDir = `examples/${args.example}`
44
+
45
+ consola.info(`Scaffolding "${args.example}" example...`)
46
+
47
+ try {
48
+ // Create temporary directory
49
+ const { stdout: tmpDir } = await $`mktemp -d`
50
+ const tmpDirPath = tmpDir.trim()
51
+
52
+ try {
53
+ // Clone only the specific example directory using sparse checkout
54
+ await $({ quiet: true })`git clone --depth 1 --filter=blob:none --sparse ${repository} ${tmpDirPath}`
55
+ await $`cd ${tmpDirPath} && git sparse-checkout set ${repoExampleDir}`
56
+
57
+ const sourceExamplePath = Path.join(tmpDirPath, repoExampleDir)
58
+
59
+ // Verify the example exists
60
+ if (!await Fs.exists(sourceExamplePath)) {
61
+ throw new Error(`Example "${args.example}" not found in the repository`)
62
+ }
63
+
64
+ // Create project root directory if needed
65
+ await $`mkdir -p ${projectRoot}`
66
+
67
+ // Copy files excluding build artifacts and dependencies using rsync
68
+ await $`rsync -av --exclude="node_modules/" --exclude="dist/" --exclude=".bundle-explorer/" --exclude="pnpm-lock.yaml" ${sourceExamplePath}/ ${projectRoot}/`
69
+
70
+ consola.success(`Done`)
71
+
72
+ if (!isCwdEmpty) {
73
+ consola.success(`Your project is ready! Get Started:`)
74
+ }
75
+ } finally {
76
+ // Clean up temporary directory
77
+ await $`rm -rf ${tmpDirPath}`
78
+ }
79
+ } catch (error) {
80
+ consola.error(`Failed to scaffold example: ${error instanceof Error ? error.message : String(error)}`)
81
+ process.exit(1)
82
+ }
83
+
84
+ // End Scaffold Example
85
+ // --------------------
86
+
87
+ await Manifest.resource.update((manifest) => {
88
+ manifest.name = name
89
+ manifest.description = `A new project`
90
+ manifest.packageManager = `pnpm@10.11.0`
91
+ }, projectRoot)
92
+
93
+ if (args.link) {
94
+ await $`pnpm link polen`
95
+ }
96
+
97
+ console.log(``)
98
+ console.log(` cd ./${Path.relative(cwd, projectRoot)} && pnpm dev`)
@@ -16,7 +16,7 @@ import type { Fn } from '@wollybeard/kit'
16
16
  import { Err, Fs, Json, Path, Rec } from '@wollybeard/kit'
17
17
  import { homedir } from 'node:os'
18
18
  import { z } from 'zod'
19
- import { defineConfig } from '../../create-configuration.js'
19
+ import { defineConfig } from '../../api/define-config.js'
20
20
 
21
21
  const args = Command.create()
22
22
  .parameter(