@typecad/cuttlefish 1.0.0-alpha.13 → 1.0.0-alpha.14

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 (64) hide show
  1. package/assets/editor-extensions/typecad-debug/README.md +142 -0
  2. package/assets/editor-extensions/typecad-debug/out/extension.js +347 -0
  3. package/assets/editor-extensions/typecad-debug/out/extension.js.map +1 -0
  4. package/assets/editor-extensions/typecad-debug/package.json +76 -0
  5. package/assets/editor-extensions/typecad-ui/LICENSE +27 -0
  6. package/assets/editor-extensions/typecad-ui/README.md +52 -0
  7. package/assets/editor-extensions/typecad-ui/file-icon-dark.png +0 -0
  8. package/assets/editor-extensions/typecad-ui/file-icon-light.png +0 -0
  9. package/assets/editor-extensions/typecad-ui/icon.png +0 -0
  10. package/assets/editor-extensions/typecad-ui/language-configuration.json +43 -0
  11. package/assets/editor-extensions/typecad-ui/package.json +54 -0
  12. package/assets/editor-extensions/typecad-ui/snippets/typecad-ui.json +80 -0
  13. package/assets/editor-extensions/typecad-ui/syntaxes/markdown-ui.json +45 -0
  14. package/assets/editor-extensions/typecad-ui/syntaxes/typecad-ui.tmLanguage.json +1269 -0
  15. package/dist/api/config.d.ts +8 -1
  16. package/dist/api/shared/framework-manifest.d.ts +61 -504
  17. package/dist/cli.js +17 -6
  18. package/dist/config-loader.js +3 -1
  19. package/dist/config-schema.d.ts +17 -223
  20. package/dist/config-schema.js +1 -0
  21. package/dist/contract/contract-parser.d.ts +9 -127
  22. package/dist/create/board-checklist.js +1 -1
  23. package/dist/create/board-codegen.js +4 -4
  24. package/dist/create/board-spec.d.ts +74 -530
  25. package/dist/create/editor-integration.d.ts +30 -0
  26. package/dist/create/editor-integration.js +218 -0
  27. package/dist/create/eslint-rules-template.d.ts +2 -2
  28. package/dist/create/framework-catalog.d.ts +8 -0
  29. package/dist/create/framework-catalog.js +28 -5
  30. package/dist/create/index.d.ts +7 -6
  31. package/dist/create/index.js +5 -4
  32. package/dist/create/{init-scaffold.d.ts → scaffold.d.ts} +4 -4
  33. package/dist/create/{init-scaffold.js → scaffold.js} +33 -2
  34. package/dist/create/templates.d.ts +29 -0
  35. package/dist/create/{init-templates.js → templates.js} +15 -0
  36. package/dist/create/wizard.d.ts +8 -0
  37. package/dist/create/{init-wizard.js → wizard.js} +11 -4
  38. package/dist/emit/emitters/setup.js +22 -0
  39. package/dist/ir/build-ir.js +24 -3
  40. package/dist/library/catalog.d.ts +35 -0
  41. package/dist/library/catalog.js +67 -0
  42. package/dist/library/cli.d.ts +2 -0
  43. package/dist/library/cli.js +168 -0
  44. package/dist/library/init.d.ts +25 -0
  45. package/dist/library/init.js +397 -0
  46. package/dist/library/install.d.ts +9 -0
  47. package/dist/library/install.js +80 -0
  48. package/dist/library/registry-search.d.ts +34 -0
  49. package/dist/library/registry-search.js +50 -0
  50. package/dist/library/validate.d.ts +17 -0
  51. package/dist/library/validate.js +175 -0
  52. package/dist/library-packages.d.ts +95 -0
  53. package/dist/library-packages.js +275 -0
  54. package/dist/orchestrator/graph-builder.js +16 -0
  55. package/dist/preview/client.js +17 -3
  56. package/dist/testing.d.ts +2 -2
  57. package/dist/testing.js +1 -1
  58. package/dist/transpile.js +55 -0
  59. package/dist/types.d.ts +19 -0
  60. package/dist/utils/cli.d.ts +2 -2
  61. package/dist/utils/cli.js +68 -3
  62. package/package.json +16 -8
  63. package/dist/create/init-templates.d.ts +0 -28
  64. package/dist/create/init-wizard.d.ts +0 -8
@@ -0,0 +1,43 @@
1
+ {
2
+ "comments": {
3
+ "blockComment": ["<!--", "-->"]
4
+ },
5
+ "brackets": [
6
+ ["<!--", "-->"],
7
+ ["<", ">"],
8
+ ["{", "}"],
9
+ ["(", ")"],
10
+ ["[", "]"]
11
+ ],
12
+ "autoClosingPairs": [
13
+ { "open": "{", "close": "}" },
14
+ { "open": "[", "close": "]" },
15
+ { "open": "(", "close": ")" },
16
+ { "open": "'", "close": "'" },
17
+ { "open": "\"", "close": "\"" },
18
+ { "open": "`", "close": "`", "notIn": ["comment", "string"] },
19
+ { "open": "<!--", "close": "-->", "notIn": ["comment", "string"] },
20
+ { "open": "/**", "close": "*/", "notIn": ["string"] }
21
+ ],
22
+ "autoCloseBefore": ";:.,=}])><`/ \n\t",
23
+ "surroundingPairs": [
24
+ { "open": "'", "close": "'" },
25
+ { "open": "\"", "close": "\"" },
26
+ { "open": "`", "close": "`" },
27
+ { "open": "{", "close": "}" },
28
+ { "open": "[", "close": "]" },
29
+ { "open": "(", "close": ")" },
30
+ { "open": "<", "close": ">" }
31
+ ],
32
+ "wordPattern": "({[^}]*})|([\\w:.$-]+)",
33
+ "indentationRules": {
34
+ "increaseIndentPattern": "(^.*\\{[^}\"']*$)|(^.*\\([^)\"']*$)|(^.*<(?!/)(?!.*/>)[^>]*>$)",
35
+ "decreaseIndentPattern": "^\\s*(\\}|\\)|</)"
36
+ },
37
+ "folding": {
38
+ "markers": {
39
+ "start": "^\\s*(//|/\\*\\*?)\\s*#?region\\b|^<(screen|style|script)[^>]*>|^\\s*<!--\\s*#region\\b",
40
+ "end": "^\\s*(//|/\\*\\*?)\\s*#?endregion\\b|^</(screen|style|script)>|^\\s*<!--\\s*#endregion\\b"
41
+ }
42
+ }
43
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "typecad-ui",
3
+ "displayName": "TypeCAD UI (.ui) Syntax",
4
+ "description": "Syntax highlighting for cuttlefish .ui single-file components: TypeScript in <script>, CSS in <style>, Svelte-style markup directives and interpolations.",
5
+ "version": "0.1.0",
6
+ "publisher": "typecad",
7
+ "license": "MIT",
8
+ "icon": "icon.png",
9
+ "engines": {
10
+ "vscode": "^1.89.0"
11
+ },
12
+ "categories": [
13
+ "Programming Languages"
14
+ ],
15
+ "contributes": {
16
+ "languages": [
17
+ {
18
+ "id": "typecad-ui",
19
+ "aliases": [
20
+ "Cuttlefish UI",
21
+ "typecad-ui"
22
+ ],
23
+ "extensions": [
24
+ ".ui"
25
+ ],
26
+ "icon": {
27
+ "light": "./file-icon-light.png",
28
+ "dark": "./file-icon-dark.png"
29
+ },
30
+ "configuration": "./language-configuration.json"
31
+ }
32
+ ],
33
+ "grammars": [
34
+ {
35
+ "language": "typecad-ui",
36
+ "scopeName": "source.typecad-ui",
37
+ "path": "./syntaxes/typecad-ui.tmLanguage.json"
38
+ },
39
+ {
40
+ "scopeName": "markdown.typecad-ui.codeblock",
41
+ "path": "./syntaxes/markdown-ui.json",
42
+ "injectTo": [
43
+ "text.html.markdown"
44
+ ]
45
+ }
46
+ ],
47
+ "snippets": [
48
+ {
49
+ "language": "typecad-ui",
50
+ "path": "./snippets/typecad-ui.json"
51
+ }
52
+ ]
53
+ }
54
+ }
@@ -0,0 +1,80 @@
1
+ {
2
+ "Import ui": {
3
+ "prefix": "import-ui",
4
+ "body": ["import { ui } from '@typecad/ui';"],
5
+ "description": "Import the ui runtime"
6
+ },
7
+ "Screen": {
8
+ "prefix": "screen",
9
+ "body": [
10
+ "<screen id=\"${1:id}\">",
11
+ " <body>",
12
+ " <header class=\"screenHeader\">",
13
+ " <a class=\"backLink\" href=\"#home\">&lt; Back</a>",
14
+ " <h2 class=\"screenTitle\">${2:Title}</h2>",
15
+ " </header>",
16
+ " <main class=\"scrollBody\">",
17
+ " $0",
18
+ " </main>",
19
+ " </body>",
20
+ "</screen>"
21
+ ],
22
+ "description": "New screen with header and scroll body"
23
+ },
24
+ "Button": {
25
+ "prefix": "button",
26
+ "body": [
27
+ "<button id=\"${1:id}\" class=\"btn btn-primary\" on:click={${2:handler}}>${3:Label}</button>"
28
+ ],
29
+ "description": "Button with click handler"
30
+ },
31
+ "Text": {
32
+ "prefix": "text",
33
+ "body": ["<text id=\"${1:id}\" class=\"${2:badge}\">${3:text}</text>"],
34
+ "description": "Text element"
35
+ },
36
+ "Interpolation": {
37
+ "prefix": "interp",
38
+ "body": ["{${1:expr}}"],
39
+ "description": "Interpolated expression in markup"
40
+ },
41
+ "Signal": {
42
+ "prefix": "signal",
43
+ "body": ["export const ${1:name} = ui.signal(${2:0});"],
44
+ "description": "Reactive signal"
45
+ },
46
+ "Handler": {
47
+ "prefix": "handler",
48
+ "body": ["export function ${1:onTap}() {", " $0", "}"],
49
+ "description": "Exported event handler"
50
+ },
51
+ "Bind": {
52
+ "prefix": "bind",
53
+ "body": [
54
+ "ui.bind(screen.${1:elem}, '${2|text,visible,background,color,borderColor|}', () => ${3:expr});"
55
+ ],
56
+ "description": "Bind an element property to an expression"
57
+ },
58
+ "Canvas": {
59
+ "prefix": "canvas",
60
+ "body": [
61
+ "ui.drawCanvas(screen.${1:elem}, (ctx) => {",
62
+ " ctx.fillScreen('${2:#101828}');",
63
+ " $0",
64
+ "});"
65
+ ],
66
+ "description": "Canvas draw block"
67
+ },
68
+ "List": {
69
+ "prefix": "list",
70
+ "body": [
71
+ "ui.bindList(",
72
+ " screen.${1:elem},",
73
+ " () => ${2:count},",
74
+ " (i: number) => `${3:Row }${i}`,",
75
+ " (i: number) => { ${4:onTap(i)} },",
76
+ ");"
77
+ ],
78
+ "description": "Virtualized list binding"
79
+ }
80
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "scopeName": "markdown.typecad-ui.codeblock",
3
+ "fileTypes": [],
4
+ "injectionSelector": "L:text.html.markdown",
5
+ "patterns": [
6
+ {
7
+ "include": "#ui-code-block"
8
+ }
9
+ ],
10
+ "repository": {
11
+ "ui-code-block": {
12
+ "begin": "(^|\\G)(\\s*)(\\`{3,}|~{3,})\\s*(?i:(ui|cuttlefish)(\\s+[^`~]*)?$)",
13
+ "name": "markup.fenced_code.block.markdown",
14
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
15
+ "beginCaptures": {
16
+ "3": {
17
+ "name": "punctuation.definition.markdown"
18
+ },
19
+ "5": {
20
+ "name": "fenced_code.block.language"
21
+ },
22
+ "6": {
23
+ "name": "fenced_code.block.language.attributes"
24
+ }
25
+ },
26
+ "endCaptures": {
27
+ "3": {
28
+ "name": "punctuation.definition.markdown"
29
+ }
30
+ },
31
+ "patterns": [
32
+ {
33
+ "begin": "(^|\\G)(\\s*)(.*)",
34
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
35
+ "contentName": "meta.embedded.block.typecad-ui",
36
+ "patterns": [
37
+ {
38
+ "include": "source.typecad-ui"
39
+ }
40
+ ]
41
+ }
42
+ ]
43
+ }
44
+ }
45
+ }