@deckspec/dsl 0.1.4 → 0.1.6

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.
package/dist/parser.d.ts CHANGED
@@ -26,10 +26,11 @@ export interface ResolvedSlideFile {
26
26
  * Resolution priority (ADR-022):
27
27
  * 1. Deck-local pattern: {basePath}/patterns/{name}/index.tsx
28
28
  * 2. Deck-local pattern: {basePath}/patterns/{name}/index.js
29
- * 3. Theme pattern: {patternsDir}/{name}/index.js
30
- * 4. Theme pattern: {patternsDir}/{name}.js
29
+ * 3. Theme pattern: {patternsDir}/{name}/index.js (compiled)
30
+ * 4. Theme pattern: {patternsDir}/{name}.js (compiled, flat)
31
+ * 5. Theme pattern: {patternsSrcDir}/{name}/index.tsx (source, on-the-fly compile)
31
32
  *
32
33
  * Files with extensions (.html etc) are resolved relative to basePath as passthrough.
33
34
  */
34
- export declare function resolveSlideFile(file: string, basePath: string, patternsDir: string): Promise<ResolvedSlideFile>;
35
+ export declare function resolveSlideFile(file: string, basePath: string, patternsDir: string, patternsSrcDir?: string): Promise<ResolvedSlideFile>;
35
36
  //# sourceMappingURL=parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAQzD;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUrE;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,0FAA0F;IAC1F,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,CAAC,CA6C5B"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAQzD;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUrE;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,0FAA0F;IAC1F,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,iBAAiB,CAAC,CA0D5B"}
package/dist/parser.js CHANGED
@@ -38,12 +38,13 @@ export async function loadDeckFile(filePath) {
38
38
  * Resolution priority (ADR-022):
39
39
  * 1. Deck-local pattern: {basePath}/patterns/{name}/index.tsx
40
40
  * 2. Deck-local pattern: {basePath}/patterns/{name}/index.js
41
- * 3. Theme pattern: {patternsDir}/{name}/index.js
42
- * 4. Theme pattern: {patternsDir}/{name}.js
41
+ * 3. Theme pattern: {patternsDir}/{name}/index.js (compiled)
42
+ * 4. Theme pattern: {patternsDir}/{name}.js (compiled, flat)
43
+ * 5. Theme pattern: {patternsSrcDir}/{name}/index.tsx (source, on-the-fly compile)
43
44
  *
44
45
  * Files with extensions (.html etc) are resolved relative to basePath as passthrough.
45
46
  */
46
- export async function resolveSlideFile(file, basePath, patternsDir) {
47
+ export async function resolveSlideFile(file, basePath, patternsDir, patternsSrcDir) {
47
48
  const ext = extname(file);
48
49
  if (ext) {
49
50
  // File with extension → relative to deck directory
@@ -83,8 +84,20 @@ export async function resolveSlideFile(file, basePath, patternsDir) {
83
84
  return { type: "pattern", path: flatPath };
84
85
  }
85
86
  catch {
86
- throw new Error(`Pattern "${file}" not found. Looked in:\n ${localTsxPath}\n ${localJsPath}\n ${dirIndexPath}\n ${flatPath}`);
87
+ // continue
87
88
  }
88
89
  }
90
+ // 5. Theme source: patternsSrcDir/{name}/index.tsx (on-the-fly compile)
91
+ if (patternsSrcDir) {
92
+ const themeTsxPath = resolve(patternsSrcDir, file, "index.tsx");
93
+ try {
94
+ await access(themeTsxPath);
95
+ return { type: "pattern", path: themeTsxPath, tsx: true };
96
+ }
97
+ catch {
98
+ // continue
99
+ }
100
+ }
101
+ throw new Error(`Pattern "${file}" not found. Looked in:\n ${localTsxPath}\n ${localJsPath}\n ${resolve(patternsDir, file, "index.js")}\n ${resolve(patternsDir, `${file}.js`)}${patternsSrcDir ? `\n ${resolve(patternsSrcDir, file, "index.tsx")}` : ""}`);
89
102
  }
90
103
  //# sourceMappingURL=parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deckspec/dsl",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "files": [
5
5
  "dist",
6
6
  "src"
@@ -11,7 +11,7 @@
11
11
  "dependencies": {
12
12
  "js-yaml": "^4.1.0",
13
13
  "zod": "^3.23.0",
14
- "@deckspec/schema": "0.1.4"
14
+ "@deckspec/schema": "0.1.6"
15
15
  },
16
16
  "devDependencies": {
17
17
  "@types/js-yaml": "^4.0.9",
package/src/parser.ts CHANGED
@@ -51,8 +51,9 @@ export interface ResolvedSlideFile {
51
51
  * Resolution priority (ADR-022):
52
52
  * 1. Deck-local pattern: {basePath}/patterns/{name}/index.tsx
53
53
  * 2. Deck-local pattern: {basePath}/patterns/{name}/index.js
54
- * 3. Theme pattern: {patternsDir}/{name}/index.js
55
- * 4. Theme pattern: {patternsDir}/{name}.js
54
+ * 3. Theme pattern: {patternsDir}/{name}/index.js (compiled)
55
+ * 4. Theme pattern: {patternsDir}/{name}.js (compiled, flat)
56
+ * 5. Theme pattern: {patternsSrcDir}/{name}/index.tsx (source, on-the-fly compile)
56
57
  *
57
58
  * Files with extensions (.html etc) are resolved relative to basePath as passthrough.
58
59
  */
@@ -60,6 +61,7 @@ export async function resolveSlideFile(
60
61
  file: string,
61
62
  basePath: string,
62
63
  patternsDir: string,
64
+ patternsSrcDir?: string,
63
65
  ): Promise<ResolvedSlideFile> {
64
66
  const ext = extname(file);
65
67
 
@@ -100,9 +102,22 @@ export async function resolveSlideFile(
100
102
  await access(flatPath);
101
103
  return { type: "pattern", path: flatPath };
102
104
  } catch {
103
- throw new Error(
104
- `Pattern "${file}" not found. Looked in:\n ${localTsxPath}\n ${localJsPath}\n ${dirIndexPath}\n ${flatPath}`,
105
- );
105
+ // continue
106
106
  }
107
107
  }
108
+
109
+ // 5. Theme source: patternsSrcDir/{name}/index.tsx (on-the-fly compile)
110
+ if (patternsSrcDir) {
111
+ const themeTsxPath = resolve(patternsSrcDir, file, "index.tsx");
112
+ try {
113
+ await access(themeTsxPath);
114
+ return { type: "pattern", path: themeTsxPath, tsx: true };
115
+ } catch {
116
+ // continue
117
+ }
118
+ }
119
+
120
+ throw new Error(
121
+ `Pattern "${file}" not found. Looked in:\n ${localTsxPath}\n ${localJsPath}\n ${resolve(patternsDir, file, "index.js")}\n ${resolve(patternsDir, `${file}.js`)}${patternsSrcDir ? `\n ${resolve(patternsSrcDir, file, "index.tsx")}` : ""}`,
122
+ );
108
123
  }