attio 0.0.1-experimental.20240522

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 (94) hide show
  1. package/README.md +9 -0
  2. package/lib/build.d.ts +160 -0
  3. package/lib/build.d.ts.map +1 -0
  4. package/lib/build.js +81 -0
  5. package/lib/build.js.map +1 -0
  6. package/lib/cli.d.ts +3 -0
  7. package/lib/cli.d.ts.map +1 -0
  8. package/lib/cli.js +5 -0
  9. package/lib/cli.js.map +1 -0
  10. package/lib/commands/build.d.ts +4 -0
  11. package/lib/commands/build.d.ts.map +1 -0
  12. package/lib/commands/build.js +28 -0
  13. package/lib/commands/build.js.map +1 -0
  14. package/lib/commands/scaffold.d.ts +10 -0
  15. package/lib/commands/scaffold.d.ts.map +1 -0
  16. package/lib/commands/scaffold.js +95 -0
  17. package/lib/commands/scaffold.js.map +1 -0
  18. package/lib/commands/watch.d.ts +3 -0
  19. package/lib/commands/watch.d.ts.map +1 -0
  20. package/lib/commands/watch.js +56 -0
  21. package/lib/commands/watch.js.map +1 -0
  22. package/lib/components/BuildError.d.ts +12 -0
  23. package/lib/components/BuildError.d.ts.map +1 -0
  24. package/lib/components/BuildError.js +56 -0
  25. package/lib/components/BuildError.js.map +1 -0
  26. package/lib/components/BuildLog.d.ts +7 -0
  27. package/lib/components/BuildLog.d.ts.map +1 -0
  28. package/lib/components/BuildLog.js +7 -0
  29. package/lib/components/BuildLog.js.map +1 -0
  30. package/lib/components/MultiSelect.d.ts +13 -0
  31. package/lib/components/MultiSelect.d.ts.map +1 -0
  32. package/lib/components/MultiSelect.js +66 -0
  33. package/lib/components/MultiSelect.js.map +1 -0
  34. package/lib/components/Select.d.ts +12 -0
  35. package/lib/components/Select.d.ts.map +1 -0
  36. package/lib/components/Select.js +8 -0
  37. package/lib/components/Select.js.map +1 -0
  38. package/lib/components/TypeScriptError.d.ts +11 -0
  39. package/lib/components/TypeScriptError.d.ts.map +1 -0
  40. package/lib/components/TypeScriptError.js +47 -0
  41. package/lib/components/TypeScriptError.js.map +1 -0
  42. package/lib/hooks/useFullScreen.d.ts +3 -0
  43. package/lib/hooks/useFullScreen.d.ts.map +1 -0
  44. package/lib/hooks/useFullScreen.js +17 -0
  45. package/lib/hooks/useFullScreen.js.map +1 -0
  46. package/lib/machines/build-machine.d.ts +60 -0
  47. package/lib/machines/build-machine.d.ts.map +1 -0
  48. package/lib/machines/build-machine.js +64 -0
  49. package/lib/machines/build-machine.js.map +1 -0
  50. package/lib/machines/scaffold-machine.d.ts +311 -0
  51. package/lib/machines/scaffold-machine.d.ts.map +1 -0
  52. package/lib/machines/scaffold-machine.js +260 -0
  53. package/lib/machines/scaffold-machine.js.map +1 -0
  54. package/lib/machines/watch-machine.d.ts +199 -0
  55. package/lib/machines/watch-machine.d.ts.map +1 -0
  56. package/lib/machines/watch-machine.js +218 -0
  57. package/lib/machines/watch-machine.js.map +1 -0
  58. package/lib/templates/common/README.md +19 -0
  59. package/lib/templates/javascript/.eslintignore +4 -0
  60. package/lib/templates/javascript/actions.jsx +12 -0
  61. package/lib/templates/javascript/counter-action.jsx +18 -0
  62. package/lib/templates/javascript/eslint.cjs +1 -0
  63. package/lib/templates/javascript/package.json +24 -0
  64. package/lib/templates/typescript/.eslintignore +4 -0
  65. package/lib/templates/typescript/actions.tsx +12 -0
  66. package/lib/templates/typescript/counter-action.tsx +18 -0
  67. package/lib/templates/typescript/eslint.cjs +6 -0
  68. package/lib/templates/typescript/package.json +25 -0
  69. package/lib/templates/typescript/tsconfig.json +50 -0
  70. package/lib/util/copy-with-replace.d.ts +2 -0
  71. package/lib/util/copy-with-replace.d.ts.map +1 -0
  72. package/lib/util/copy-with-replace.js +29 -0
  73. package/lib/util/copy-with-replace.js.map +1 -0
  74. package/lib/util/create-directory.d.ts +2 -0
  75. package/lib/util/create-directory.d.ts.map +1 -0
  76. package/lib/util/create-directory.js +20 -0
  77. package/lib/util/create-directory.js.map +1 -0
  78. package/lib/util/is-command-available.d.ts +2 -0
  79. package/lib/util/is-command-available.d.ts.map +1 -0
  80. package/lib/util/is-command-available.js +13 -0
  81. package/lib/util/is-command-available.js.map +1 -0
  82. package/lib/util/make-extension-name.d.ts +2 -0
  83. package/lib/util/make-extension-name.d.ts.map +1 -0
  84. package/lib/util/make-extension-name.js +11 -0
  85. package/lib/util/make-extension-name.js.map +1 -0
  86. package/lib/util/typescript.d.ts +41 -0
  87. package/lib/util/typescript.d.ts.map +1 -0
  88. package/lib/util/typescript.js +74 -0
  89. package/lib/util/typescript.js.map +1 -0
  90. package/lib/util/validate-project-name.d.ts +2 -0
  91. package/lib/util/validate-project-name.d.ts.map +1 -0
  92. package/lib/util/validate-project-name.js +27 -0
  93. package/lib/util/validate-project-name.js.map +1 -0
  94. package/package.json +50 -0
@@ -0,0 +1,74 @@
1
+ import { createReadStream } from "fs";
2
+ import { createInterface } from "readline";
3
+ import { default as ts } from "typescript";
4
+ import { z } from "zod";
5
+ async function readLine(path, line) {
6
+ const stream = createReadStream(path);
7
+ const readlineInterface = createInterface({
8
+ input: stream,
9
+ crlfDelay: Infinity,
10
+ });
11
+ let currentLine = 0;
12
+ for await (const lineText of readlineInterface) {
13
+ currentLine += 1;
14
+ if (currentLine === line + 1) {
15
+ readlineInterface.close();
16
+ stream.close();
17
+ return lineText;
18
+ }
19
+ }
20
+ return null;
21
+ }
22
+ const formatHost = {
23
+ getCanonicalFileName: (path) => path,
24
+ getCurrentDirectory: ts.sys.getCurrentDirectory,
25
+ getNewLine: () => "\n",
26
+ };
27
+ export const typeScriptErrorSchema = z.object({
28
+ text: z.string(),
29
+ location: z
30
+ .object({
31
+ file: z.string(),
32
+ lineText: z.string(),
33
+ line: z.number(),
34
+ character: z.number(),
35
+ })
36
+ .optional(),
37
+ });
38
+ export const readConfig = async (configFile) => new Promise((resolve, reject) => {
39
+ const { config, error } = ts.readConfigFile(configFile, ts.sys.readFile);
40
+ if (error) {
41
+ reject(typeScriptErrorSchema.parse({ text: ts.formatDiagnostic(error, formatHost) }));
42
+ }
43
+ else {
44
+ const parsedCommandLine = ts.parseJsonConfigFileContent(config, ts.sys, "./");
45
+ resolve(ts.createProgram({
46
+ rootNames: parsedCommandLine.fileNames,
47
+ options: parsedCommandLine.options,
48
+ }));
49
+ }
50
+ });
51
+ export const getDiagnostics = async (program) => {
52
+ const diagnostics = ts.getPreEmitDiagnostics(program);
53
+ const errors = await Promise.all(diagnostics.map(async (diagnostic) => {
54
+ const text = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
55
+ if (diagnostic.file) {
56
+ const { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
57
+ const lineText = await readLine(diagnostic.file.fileName, line);
58
+ return typeScriptErrorSchema.parse({
59
+ text,
60
+ location: {
61
+ file: diagnostic.file.fileName,
62
+ line,
63
+ character,
64
+ lineText,
65
+ },
66
+ });
67
+ }
68
+ else {
69
+ return typeScriptErrorSchema.parse({ text });
70
+ }
71
+ }));
72
+ return errors;
73
+ };
74
+ //# sourceMappingURL=typescript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../src/util/typescript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const validateProjectName: (name: string) => string | null;
2
+ //# sourceMappingURL=validate-project-name.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-project-name.d.ts","sourceRoot":"","sources":["../../src/util/validate-project-name.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,mBAAmB,SAAU,MAAM,KAAG,MAAM,GAAG,IAiB3D,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { accessSync, constants, existsSync } from "fs";
2
+ import { join, resolve } from "path";
3
+ const projectNameRegex = /^[a-z\-$]*$/;
4
+ const canWrite = (path) => {
5
+ try {
6
+ accessSync(resolve(path), constants.W_OK);
7
+ return true;
8
+ }
9
+ catch {
10
+ return false;
11
+ }
12
+ };
13
+ export const validateProjectName = (name) => {
14
+ if (!name.trim())
15
+ return "Missing name";
16
+ if (!projectNameRegex.test(name)) {
17
+ return "Name contains invalid characters. Must be lowercase letters or hyphens only.";
18
+ }
19
+ if (existsSync(join(process.cwd(), name))) {
20
+ return `Directory "${name}" already exists`;
21
+ }
22
+ if (!canWrite(".")) {
23
+ return "Write access denied to current directory";
24
+ }
25
+ return null;
26
+ };
27
+ //# sourceMappingURL=validate-project-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-project-name.js","sourceRoot":"","sources":["../../src/util/validate-project-name.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAC,MAAM,IAAI,CAAA;AACpD,OAAO,EAAC,IAAI,EAAE,OAAO,EAAC,MAAM,MAAM,CAAA;AAElC,MAAM,gBAAgB,GAAG,aAAa,CAAA;AAEtC,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAW,EAAE;IACvC,IAAI,CAAC;QACD,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QAEzC,OAAO,IAAI,CAAA;IACf,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAA;IAChB,CAAC;AACL,CAAC,CAAA;AAQD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAiB,EAAE;IAC/D,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,cAAc,CAAA;IACvC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,8EAA8E,CAAA;IACzF,CAAC;IAGD,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;QACxC,OAAO,cAAc,IAAI,kBAAkB,CAAA;IAC/C,CAAC;IAGD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACjB,OAAO,0CAA0C,CAAA;IACrD,CAAC;IAED,OAAO,IAAI,CAAA;AACf,CAAC,CAAA"}
package/package.json ADDED
@@ -0,0 +1,50 @@
1
+ {
2
+ "name": "attio",
3
+ "version": "0.0.1-experimental.20240522",
4
+ "bin": {
5
+ "attio": "lib/cli.js"
6
+ },
7
+ "type": "module",
8
+ "files": [
9
+ "lib"
10
+ ],
11
+ "scripts": {
12
+ "build": "tsc --build && node ./scripts/copy-templates.js",
13
+ "build-watch": "tsc --build --watch",
14
+ "test": "yarn run test-typescript",
15
+ "test-typescript": "tsc --build",
16
+ "clean": "rm -rf lib && rm -rf tsconfig.tsbuildinfo",
17
+ "lint": "eslint 'src/**/*.{js,ts,tsx}'"
18
+ },
19
+ "prettier": "@attio/eslint-plugin/prettier",
20
+ "devDependencies": {
21
+ "@attio/client-extension-types": "workspace:^",
22
+ "@attio/eslint-plugin": "workspace:^",
23
+ "@types/node": "20.12.2",
24
+ "@types/yargs": "^17.0.32",
25
+ "eslint": "^8.56.0",
26
+ "ncp": "2.0.0"
27
+ },
28
+ "dependencies": {
29
+ "@fal-works/esbuild-plugin-global-externals": "^2.1.2",
30
+ "@swc/core": "^1.3.58",
31
+ "@xstate/react": "^4.1.1",
32
+ "chokidar": "^3.6.0",
33
+ "date-fns": "^2.21.1",
34
+ "esbuild": "^0.20.2",
35
+ "figures": "^6.1.0",
36
+ "ink": "^4.4.1",
37
+ "ink-big-text": "^2.0.0",
38
+ "ink-gradient": "^3.0.0",
39
+ "ink-link": "^3.0.0",
40
+ "ink-select-input": "^5.0.0",
41
+ "ink-spinner": "^5.0.0",
42
+ "ink-text-input": "^5.0.1",
43
+ "pastel": "^2.0.2",
44
+ "react": "18.2.0",
45
+ "typescript": "5.4.5",
46
+ "xstate": "^5.12.0",
47
+ "yargs": "^17.7.2",
48
+ "zod": "^3.22.3"
49
+ }
50
+ }