@knapsack/renderer-hbs 5.0.0--canary.6593.4738696.0 β 5.0.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.
- package/.lintstagedrc.mjs +2 -2
- package/CHANGELOG.md +133 -0
- package/dist/renderer-hbs.d.ts +1 -1
- package/dist/renderer-hbs.d.ts.map +1 -1
- package/dist/renderer-hbs.js +177 -175
- package/dist/renderer-hbs.js.map +1 -1
- package/package.json +18 -18
- package/.eslintignore +0 -0
- package/.eslintrc.js +0 -8
package/.lintstagedrc.mjs
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,136 @@
|
|
|
1
|
+
# v4.89.8 (Fri Feb 20 2026)
|
|
2
|
+
|
|
3
|
+
### Release Notes
|
|
4
|
+
|
|
5
|
+
#### KSP-7685: Synthetic Data for Conflict Enrichment/Resolution testing ([#7154](https://github.com/knapsack-labs/app-monorepo/pull/7154))
|
|
6
|
+
|
|
7
|
+
* **Documentation**
|
|
8
|
+
* Added synthetic multi-source test fixtures including component documentation, design tokens, and brand guidelines for comprehensive testing coverage.
|
|
9
|
+
|
|
10
|
+
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
#### π Bug Fix
|
|
15
|
+
|
|
16
|
+
- Merged latest in ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
17
|
+
- Fixed indentation erros ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
18
|
+
- merge latest in ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
19
|
+
- Merge branch 'latest' into sxa/KSP-7037-tests-v2 ([@sxalexander](https://github.com/sxalexander))
|
|
20
|
+
- Use node: protocol prefix in all .lintstagedrc.mjs files ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
21
|
+
- Migrated ESLint config to flat config format (ESLint 9) ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
22
|
+
|
|
23
|
+
#### π Internal
|
|
24
|
+
|
|
25
|
+
- Update lodash to 4.17.23. [#7200](https://github.com/knapsack-labs/app-monorepo/pull/7200) ([@greylabel](https://github.com/greylabel))
|
|
26
|
+
- KSP-5516 Upgraded prettier to v3.8.1 and fix async API usage [#7191](https://github.com/knapsack-labs/app-monorepo/pull/7191) ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
27
|
+
- KSP-7685: Synthetic Data for Conflict Enrichment/Resolution testing [#7154](https://github.com/knapsack-labs/app-monorepo/pull/7154) ([@sxalexander](https://github.com/sxalexander))
|
|
28
|
+
- KSP-5524 Migrated ESLint config to flat config format (ESLint 9) [#7162](https://github.com/knapsack-labs/app-monorepo/pull/7162) ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
29
|
+
|
|
30
|
+
#### Authors: 3
|
|
31
|
+
|
|
32
|
+
- [@EmmanuelVelez](https://github.com/EmmanuelVelez)
|
|
33
|
+
- Grant Gaudet ([@greylabel](https://github.com/greylabel))
|
|
34
|
+
- Sam Alexander ([@sxalexander](https://github.com/sxalexander))
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
# v4.89.7 (Fri Feb 06 2026)
|
|
39
|
+
|
|
40
|
+
#### π Bug Fix
|
|
41
|
+
|
|
42
|
+
- Merge branch 'latest' into feature/ksp-6555-remove-app-client-watchers-for-files-in-data-directory ([@EvanLovely](https://github.com/EvanLovely))
|
|
43
|
+
- Merge branch 'latest' into feature/ksp-6555-remove-app-client-watchers-for-files-in-data-directory ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
44
|
+
|
|
45
|
+
#### π Internal
|
|
46
|
+
|
|
47
|
+
- KSP-6106 Added consistent-type-imports rule with inline type syntax [#7128](https://github.com/knapsack-labs/app-monorepo/pull/7128) ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
48
|
+
- KSP-7692: expand server actions body size limit [#7097](https://github.com/knapsack-labs/app-monorepo/pull/7097) ([@illepic](https://github.com/illepic))
|
|
49
|
+
- KSP-7623 resolved some of react-hooks/set-state-in-effect lint errors and enab⦠[#7077](https://github.com/knapsack-labs/app-monorepo/pull/7077) ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
50
|
+
|
|
51
|
+
#### Authors: 3
|
|
52
|
+
|
|
53
|
+
- [@EmmanuelVelez](https://github.com/EmmanuelVelez)
|
|
54
|
+
- Christopher Bloom ([@illepic](https://github.com/illepic))
|
|
55
|
+
- Evan Lovely ([@EvanLovely](https://github.com/EvanLovely))
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
# v4.89.4 (Mon Jan 05 2026)
|
|
60
|
+
|
|
61
|
+
#### π Internal
|
|
62
|
+
|
|
63
|
+
- KSP-6086 normalize error and log metadata for api domains [#6997](https://github.com/knapsack-labs/app-monorepo/pull/6997) ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
64
|
+
|
|
65
|
+
#### Authors: 1
|
|
66
|
+
|
|
67
|
+
- [@EmmanuelVelez](https://github.com/EmmanuelVelez)
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
# v4.89.3 (Thu Dec 11 2025)
|
|
72
|
+
|
|
73
|
+
#### π Bug Fix
|
|
74
|
+
|
|
75
|
+
- KSP-6536 Fixed align token metrics counting with UI logic for variables and collections [#6778](https://github.com/knapsack-labs/app-monorepo/pull/6778) ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
76
|
+
- Merge branch 'latest' into feature/ksp-6536-metrics-not-computing-tokens-and-variables-correctly ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
77
|
+
- Merge remote-tracking branch 'origin/feature/ksp-6536-metrics-not-computing-tokens-and-variables-correctly' into feature/ksp-6536-metrics-not-computing-tokens-and-variables-correctly ([@EmmanuelVelez](https://github.com/EmmanuelVelez))
|
|
78
|
+
|
|
79
|
+
#### Authors: 1
|
|
80
|
+
|
|
81
|
+
- [@EmmanuelVelez](https://github.com/EmmanuelVelez)
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
# v4.89.1 (Wed Dec 10 2025)
|
|
86
|
+
|
|
87
|
+
#### π Bug Fix
|
|
88
|
+
|
|
89
|
+
- Merge remote-tracking branch 'origin/latest' into KSP-6900_mcp_onboarding_pages ([@brittanysmart](https://github.com/brittanysmart))
|
|
90
|
+
|
|
91
|
+
#### Authors: 1
|
|
92
|
+
|
|
93
|
+
- Brittany Smart ([@brittanysmart](https://github.com/brittanysmart))
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
# v4.87.9 (Thu Nov 20 2025)
|
|
98
|
+
|
|
99
|
+
#### π Internal
|
|
100
|
+
|
|
101
|
+
- fix(deps): update dependency @types/node to ^20.19.25 [#6803](https://github.com/knapsack-labs/app-monorepo/pull/6803) ([@renovate[bot]](https://github.com/renovate[bot]))
|
|
102
|
+
- fix(deps): update dependency zod to ^4.1.12 [#6861](https://github.com/knapsack-labs/app-monorepo/pull/6861) ([@renovate[bot]](https://github.com/renovate[bot]))
|
|
103
|
+
|
|
104
|
+
#### Authors: 1
|
|
105
|
+
|
|
106
|
+
- [@renovate[bot]](https://github.com/renovate[bot])
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
# v4.87.7 (Mon Nov 10 2025)
|
|
111
|
+
|
|
112
|
+
#### π Internal
|
|
113
|
+
|
|
114
|
+
- fix(deps): update typescript [#6863](https://github.com/knapsack-labs/app-monorepo/pull/6863) ([@renovate[bot]](https://github.com/renovate[bot]))
|
|
115
|
+
|
|
116
|
+
#### Authors: 1
|
|
117
|
+
|
|
118
|
+
- [@renovate[bot]](https://github.com/renovate[bot])
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
# v4.87.6 (Wed Nov 05 2025)
|
|
123
|
+
|
|
124
|
+
#### π Internal
|
|
125
|
+
|
|
126
|
+
- Add comprehensive testing for remaining frameworks and MUI lib [#6876](https://github.com/knapsack-labs/app-monorepo/pull/6876) ([@mabry1985](https://github.com/mabry1985))
|
|
127
|
+
|
|
128
|
+
#### Authors: 1
|
|
129
|
+
|
|
130
|
+
- Josh Mabry ([@mabry1985](https://github.com/mabry1985))
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
1
134
|
# v4.87.4 (Fri Oct 31 2025)
|
|
2
135
|
|
|
3
136
|
#### π Internal
|
package/dist/renderer-hbs.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Renderer as RendererBaseType, Renderable, RendererBase, type RendererBaseHydrateData } from '@knapsack/app/renderers';
|
|
1
|
+
import { type Renderer as RendererBaseType, type Renderable, RendererBase, type RendererBaseHydrateData } from '@knapsack/app/renderers';
|
|
2
2
|
import Hbs from 'handlebars';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
type Renderer = RendererBaseType<'hbs', RendererBaseHydrateData>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-hbs.d.ts","sourceRoot":"","sources":["../src/renderer-hbs.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,IAAI,gBAAgB,
|
|
1
|
+
{"version":3,"file":"renderer-hbs.d.ts","sourceRoot":"","sources":["../src/renderer-hbs.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,QAAQ,IAAI,gBAAgB,EACjC,KAAK,UAAU,EACf,YAAY,EAEZ,KAAK,uBAAuB,EAC7B,MAAM,yBAAyB,CAAC;AAUjC,OAAO,GAAG,MAAM,YAAY,CAAC;AAE7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,KAAK,QAAQ,GAAG,gBAAgB,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;AAEjE,QAAA,MAAM,YAAY;IAChB;;;OAGG;4DAe2B,OAAO,GAAG,KAAK,IAAI,eAAnB,OAAO,GAAG,KAAK,IAAI;;;;;kBARjD,CAAC;AAEH,qBAAa,mBACX,SAAQ,YAAY,CAAC,KAAK,EAAE,uBAAuB,CACnD,YAAW,UAAU,CAAC,KAAK,CAAC;IAG5B,UAAU,EAAE,OAAO,GAAG,CAAC;IACvB,eAAe,EAAE,CAAC,UAAU,EAAE,OAAO,GAAG,KAAK,IAAI,CAAC;gBAEtC,OAAO,GAAE,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAM;IAsBhD,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IA0CpC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAG7B;IAEO,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,CAGnC;IAEO,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,CAGrC;IAEO,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,CAI/B;IAEF,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAgCxB;IAEF,QAAQ,EAAE,QAAQ,CAAC,UAAU,CAAC,CAiG5B;IAEF,YAAY,EAAE,QAAQ,CAAC,cAAc,CAAC,CAYpC;IAEF,sBAAsB,EAAE,QAAQ,CAAC,wBAAwB,CAAC,CAmBxD;IAEF,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,CA0BzB;CACJ"}
|
package/dist/renderer-hbs.js
CHANGED
|
@@ -26,187 +26,16 @@ const OptionSchema = zod_1.z.strictObject({
|
|
|
26
26
|
codeSrcs: zod_1.z.array(types_1.CodeSrcUserConfigSchema).optional(),
|
|
27
27
|
});
|
|
28
28
|
class KnapsackHbsRenderer extends renderers_1.RendererBase {
|
|
29
|
+
// The handlebars instance (re-created repeatedly)
|
|
30
|
+
handlebars;
|
|
31
|
+
alterHandlebars;
|
|
29
32
|
constructor(options = {}) {
|
|
30
|
-
var _a;
|
|
31
33
|
const { error } = OptionSchema.safeParse(options);
|
|
32
34
|
super({
|
|
33
35
|
id: types_1.rendererIds.hbs,
|
|
34
36
|
language: 'hbs',
|
|
35
37
|
codeSrcsUserConfig: options.codeSrcs,
|
|
36
38
|
});
|
|
37
|
-
this.init = async (opt) => {
|
|
38
|
-
await super.init(opt);
|
|
39
|
-
await this.registerComponentPaths();
|
|
40
|
-
};
|
|
41
|
-
this.hydrate = async (opt) => {
|
|
42
|
-
await super.hydrate(opt);
|
|
43
|
-
await this.registerComponentPaths();
|
|
44
|
-
};
|
|
45
|
-
this.onChange = () => {
|
|
46
|
-
super.onChange();
|
|
47
|
-
this.registerComponentPaths();
|
|
48
|
-
};
|
|
49
|
-
this.watch = async () => {
|
|
50
|
-
app_1.knapsackEvents.onPatternsDataReady(() => {
|
|
51
|
-
this.registerComponentPaths();
|
|
52
|
-
});
|
|
53
|
-
};
|
|
54
|
-
this.render = async (opt) => {
|
|
55
|
-
try {
|
|
56
|
-
const usage = await this.getUsage(opt);
|
|
57
|
-
let data = {};
|
|
58
|
-
if ((0, types_1.isDemoWithData)(opt.demo)) {
|
|
59
|
-
const { globalData } = (0, utils_1.splitData)(opt.demo.data.props);
|
|
60
|
-
data = globalData;
|
|
61
|
-
}
|
|
62
|
-
const template = this.handlebars.compile(usage);
|
|
63
|
-
const html = template(data);
|
|
64
|
-
return {
|
|
65
|
-
ok: true,
|
|
66
|
-
html,
|
|
67
|
-
/**
|
|
68
|
-
* since we can only show one code block for usage and HBS rendering involves global data (i.e. handlebars context, the `data` var here) AND a template (the `usage` var) we're compromising by showing the data object above the template as that's the best we can do for now
|
|
69
|
-
*/
|
|
70
|
-
usage: Object.keys(data).length
|
|
71
|
-
? // eslint-disable-next-line prefer-template
|
|
72
|
-
JSON.stringify(data, null, ' ') + '\n' + usage
|
|
73
|
-
: usage,
|
|
74
|
-
templateLanguage: this.language,
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
catch (err) {
|
|
78
|
-
this.log.error(err);
|
|
79
|
-
return {
|
|
80
|
-
ok: false,
|
|
81
|
-
message: err.message,
|
|
82
|
-
html: `<p>Error rendering: ${err.message}</p>`,
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
this.getUsage = async ({ state, demo }) => {
|
|
87
|
-
if (!demo) {
|
|
88
|
-
throw new Error(`No demo received`);
|
|
89
|
-
}
|
|
90
|
-
switch (demo.type) {
|
|
91
|
-
case 'template': {
|
|
92
|
-
const { templateInfo } = demo;
|
|
93
|
-
const { absolutePath, exists } = await this.resolvePath(templateInfo.path);
|
|
94
|
-
if (!exists) {
|
|
95
|
-
throw new Error(`The Handlebars template demo does not exist at path ${absolutePath}`);
|
|
96
|
-
}
|
|
97
|
-
return (0, file_utils_1.readFile)(absolutePath);
|
|
98
|
-
}
|
|
99
|
-
case 'data-w-template-info':
|
|
100
|
-
case 'data': {
|
|
101
|
-
const { codeSrcPath } = this.normalizeDemo({ demo, state });
|
|
102
|
-
const { data: { props, slots, slotsOptionsComputed }, } = demo;
|
|
103
|
-
// No slots from the UI (empty slots object)
|
|
104
|
-
if ((0, isEmpty_1.default)(slots)) {
|
|
105
|
-
const usage = await (0, utils_1.getHbsUsage)({
|
|
106
|
-
templateName: codeSrcPath,
|
|
107
|
-
data: props,
|
|
108
|
-
});
|
|
109
|
-
return usage;
|
|
110
|
-
}
|
|
111
|
-
// We gots slots
|
|
112
|
-
{
|
|
113
|
-
const slotIncludes = await Promise.all(Object.keys(slots).map(async (slotName) => {
|
|
114
|
-
const slottedTemplates = slots[slotName];
|
|
115
|
-
const slotContent = await Promise.all(slottedTemplates.map(async (slottedTemplate) => {
|
|
116
|
-
if (slottedTemplate.type === 'text') {
|
|
117
|
-
return ` ${slottedTemplate.text}`;
|
|
118
|
-
}
|
|
119
|
-
if (slottedTemplate.type === 'template-reference') {
|
|
120
|
-
throw new Error(`Cannot handle slotted template references in ${JSON.stringify({
|
|
121
|
-
demoId: demo.id,
|
|
122
|
-
slottedTemplate,
|
|
123
|
-
})}`);
|
|
124
|
-
}
|
|
125
|
-
return this.getUsage({
|
|
126
|
-
demo: slottedTemplate.demo,
|
|
127
|
-
state,
|
|
128
|
-
});
|
|
129
|
-
}));
|
|
130
|
-
const slotOptionsComputed = slotsOptionsComputed === null || slotsOptionsComputed === void 0 ? void 0 : slotsOptionsComputed[slotName];
|
|
131
|
-
const { openTag, closeTag } = (0, renderers_1.createSlotOptionsHtmlTags)({
|
|
132
|
-
slotOptionsComputed,
|
|
133
|
-
classAttributeName: 'class',
|
|
134
|
-
stylesValueType: 'string',
|
|
135
|
-
});
|
|
136
|
-
return {
|
|
137
|
-
name: slotName,
|
|
138
|
-
content: [openTag, ...slotContent, closeTag].filter(Boolean),
|
|
139
|
-
};
|
|
140
|
-
}));
|
|
141
|
-
// @TODO: need slot names?
|
|
142
|
-
// const availableSlotNames = Object.keys(template.spec.slots);
|
|
143
|
-
const usage = await (0, utils_1.getHbsUsage)({
|
|
144
|
-
templateName: codeSrcPath,
|
|
145
|
-
data: props,
|
|
146
|
-
slots: slotIncludes,
|
|
147
|
-
});
|
|
148
|
-
return usage;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
default: {
|
|
152
|
-
const _exhaustiveCheck = demo;
|
|
153
|
-
throw new Error(`Unknown demo type: ${JSON.stringify(demo)}`);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
};
|
|
157
|
-
this.getDiscovery = async () => {
|
|
158
|
-
return {
|
|
159
|
-
rendererId: this.id,
|
|
160
|
-
meta: this.getMeta(),
|
|
161
|
-
codeSrcsByPath: Object.fromEntries(this.codeSrcs.entries()),
|
|
162
|
-
templates: this.getCodeSrcs().map(({ path }) => (0, types_1.addIdToTemplateInfo)({
|
|
163
|
-
codeSrcPath: path,
|
|
164
|
-
rendererId: this.id,
|
|
165
|
-
})),
|
|
166
|
-
};
|
|
167
|
-
};
|
|
168
|
-
this.getTemplateSuggestions = async ({ state, }) => {
|
|
169
|
-
const { unusedPaths, usedPaths } = await this.getUnusedTemplatePaths({
|
|
170
|
-
globPaths: [(0, path_1.join)(gitRoot, '**/*.{hbs,handlebars}')],
|
|
171
|
-
cwd: gitRoot,
|
|
172
|
-
state,
|
|
173
|
-
});
|
|
174
|
-
const suggestions = unusedPaths.map((path) => ({
|
|
175
|
-
path,
|
|
176
|
-
}));
|
|
177
|
-
const connectedSuggestions = usedPaths.map((path) => ({
|
|
178
|
-
path,
|
|
179
|
-
connected: true,
|
|
180
|
-
}));
|
|
181
|
-
return { suggestions: [...suggestions, ...connectedSuggestions] };
|
|
182
|
-
};
|
|
183
|
-
this.getMeta = () => ({
|
|
184
|
-
id: this.id,
|
|
185
|
-
title: 'Handlebars',
|
|
186
|
-
aliasUse: 'off',
|
|
187
|
-
aliasTitle: '',
|
|
188
|
-
aliasDescription: '',
|
|
189
|
-
enableDataDemos: true,
|
|
190
|
-
enableTemplateDemos: true,
|
|
191
|
-
hasSlotsSupport: true,
|
|
192
|
-
hasSlotOptionsSupport: true,
|
|
193
|
-
version: pkg.version,
|
|
194
|
-
hasInferSpecSupport: false,
|
|
195
|
-
hasTemplateSuggestionsSupport: true,
|
|
196
|
-
prototypingTemplate: {
|
|
197
|
-
path: '@knapsack/renderer-hbs/prototype-template.hbs',
|
|
198
|
-
spec: {
|
|
199
|
-
isInferred: false,
|
|
200
|
-
props: {
|
|
201
|
-
type: 'object',
|
|
202
|
-
properties: {},
|
|
203
|
-
},
|
|
204
|
-
slots: {
|
|
205
|
-
content: { title: 'Content' },
|
|
206
|
-
},
|
|
207
|
-
},
|
|
208
|
-
},
|
|
209
|
-
});
|
|
210
39
|
if (error) {
|
|
211
40
|
this.log.error(`"KnapsackHbsRenderer" constructor has invalid options, please fix in "knapsack.config.cjs":`, zod_1.z.prettifyError(error));
|
|
212
41
|
process.exit(1);
|
|
@@ -214,7 +43,7 @@ class KnapsackHbsRenderer extends renderers_1.RendererBase {
|
|
|
214
43
|
}
|
|
215
44
|
// Wipe out all handlebars partials and vars
|
|
216
45
|
this.handlebars = handlebars_1.default.create();
|
|
217
|
-
this.alterHandlebars =
|
|
46
|
+
this.alterHandlebars = options.alterHandlebars ?? (() => { });
|
|
218
47
|
this.alterHandlebars(this.handlebars);
|
|
219
48
|
}
|
|
220
49
|
async registerComponentPaths() {
|
|
@@ -242,6 +71,179 @@ class KnapsackHbsRenderer extends renderers_1.RendererBase {
|
|
|
242
71
|
// Running this AFTER we register all the Knapsack partials
|
|
243
72
|
this.alterHandlebars(this.handlebars);
|
|
244
73
|
}
|
|
74
|
+
init = async (opt) => {
|
|
75
|
+
await super.init(opt);
|
|
76
|
+
await this.registerComponentPaths();
|
|
77
|
+
};
|
|
78
|
+
hydrate = async (opt) => {
|
|
79
|
+
await super.hydrate(opt);
|
|
80
|
+
await this.registerComponentPaths();
|
|
81
|
+
};
|
|
82
|
+
onChange = () => {
|
|
83
|
+
super.onChange();
|
|
84
|
+
this.registerComponentPaths();
|
|
85
|
+
};
|
|
86
|
+
watch = async () => {
|
|
87
|
+
app_1.knapsackEvents.onPatternsDataReady(() => {
|
|
88
|
+
this.registerComponentPaths();
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
render = async (opt) => {
|
|
92
|
+
try {
|
|
93
|
+
const usage = await this.getUsage(opt);
|
|
94
|
+
let data = {};
|
|
95
|
+
if ((0, types_1.isDemoWithData)(opt.demo)) {
|
|
96
|
+
const { globalData } = (0, utils_1.splitData)(opt.demo.data.props);
|
|
97
|
+
data = globalData;
|
|
98
|
+
}
|
|
99
|
+
const template = this.handlebars.compile(usage);
|
|
100
|
+
const html = template(data);
|
|
101
|
+
return {
|
|
102
|
+
ok: true,
|
|
103
|
+
html,
|
|
104
|
+
/**
|
|
105
|
+
* since we can only show one code block for usage and HBS rendering involves global data (i.e. handlebars context, the `data` var here) AND a template (the `usage` var) we're compromising by showing the data object above the template as that's the best we can do for now
|
|
106
|
+
*/
|
|
107
|
+
usage: Object.keys(data).length
|
|
108
|
+
? // eslint-disable-next-line prefer-template
|
|
109
|
+
JSON.stringify(data, null, ' ') + '\n' + usage
|
|
110
|
+
: usage,
|
|
111
|
+
templateLanguage: this.language,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
this.log.error(err);
|
|
116
|
+
return {
|
|
117
|
+
ok: false,
|
|
118
|
+
message: err.message,
|
|
119
|
+
html: `<p>Error rendering: ${err.message}</p>`,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
getUsage = async ({ state, demo }) => {
|
|
124
|
+
if (!demo) {
|
|
125
|
+
throw new Error(`No demo received`);
|
|
126
|
+
}
|
|
127
|
+
switch (demo.type) {
|
|
128
|
+
case 'template': {
|
|
129
|
+
const { templateInfo } = demo;
|
|
130
|
+
const { absolutePath, exists } = await this.resolvePath(templateInfo.path);
|
|
131
|
+
if (!exists) {
|
|
132
|
+
throw new Error(`The Handlebars template demo does not exist at path ${absolutePath}`);
|
|
133
|
+
}
|
|
134
|
+
return (0, file_utils_1.readFile)(absolutePath);
|
|
135
|
+
}
|
|
136
|
+
case 'data-w-template-info':
|
|
137
|
+
case 'data': {
|
|
138
|
+
const { codeSrcPath } = this.normalizeDemo({ demo, state });
|
|
139
|
+
const { data: { props, slots, slotsOptionsComputed }, } = demo;
|
|
140
|
+
// No slots from the UI (empty slots object)
|
|
141
|
+
if ((0, isEmpty_1.default)(slots)) {
|
|
142
|
+
const usage = await (0, utils_1.getHbsUsage)({
|
|
143
|
+
templateName: codeSrcPath,
|
|
144
|
+
data: props,
|
|
145
|
+
});
|
|
146
|
+
return usage;
|
|
147
|
+
}
|
|
148
|
+
// We gots slots
|
|
149
|
+
{
|
|
150
|
+
const slotIncludes = await Promise.all(Object.keys(slots).map(async (slotName) => {
|
|
151
|
+
const slottedTemplates = slots[slotName];
|
|
152
|
+
const slotContent = await Promise.all(slottedTemplates.map(async (slottedTemplate) => {
|
|
153
|
+
if (slottedTemplate.type === 'text') {
|
|
154
|
+
return ` ${slottedTemplate.text}`;
|
|
155
|
+
}
|
|
156
|
+
if (slottedTemplate.type === 'template-reference') {
|
|
157
|
+
throw new Error(`Cannot handle slotted template references in ${JSON.stringify({
|
|
158
|
+
demoId: demo.id,
|
|
159
|
+
slottedTemplate,
|
|
160
|
+
})}`);
|
|
161
|
+
}
|
|
162
|
+
return this.getUsage({
|
|
163
|
+
demo: slottedTemplate.demo,
|
|
164
|
+
state,
|
|
165
|
+
});
|
|
166
|
+
}));
|
|
167
|
+
const slotOptionsComputed = slotsOptionsComputed?.[slotName];
|
|
168
|
+
const { openTag, closeTag } = (0, renderers_1.createSlotOptionsHtmlTags)({
|
|
169
|
+
slotOptionsComputed,
|
|
170
|
+
classAttributeName: 'class',
|
|
171
|
+
stylesValueType: 'string',
|
|
172
|
+
});
|
|
173
|
+
return {
|
|
174
|
+
name: slotName,
|
|
175
|
+
content: [openTag, ...slotContent, closeTag].filter(Boolean),
|
|
176
|
+
};
|
|
177
|
+
}));
|
|
178
|
+
// @TODO: need slot names?
|
|
179
|
+
// const availableSlotNames = Object.keys(template.spec.slots);
|
|
180
|
+
const usage = await (0, utils_1.getHbsUsage)({
|
|
181
|
+
templateName: codeSrcPath,
|
|
182
|
+
data: props,
|
|
183
|
+
slots: slotIncludes,
|
|
184
|
+
});
|
|
185
|
+
return usage;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
default: {
|
|
189
|
+
const _exhaustiveCheck = demo;
|
|
190
|
+
throw new Error(`Unknown demo type: ${JSON.stringify(demo)}`);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
getDiscovery = async () => {
|
|
195
|
+
return {
|
|
196
|
+
rendererId: this.id,
|
|
197
|
+
meta: this.getMeta(),
|
|
198
|
+
codeSrcsByPath: Object.fromEntries(this.codeSrcs.entries()),
|
|
199
|
+
templates: this.getCodeSrcs().map(({ path }) => (0, types_1.addIdToTemplateInfo)({
|
|
200
|
+
codeSrcPath: path,
|
|
201
|
+
rendererId: this.id,
|
|
202
|
+
})),
|
|
203
|
+
};
|
|
204
|
+
};
|
|
205
|
+
getTemplateSuggestions = async ({ state, }) => {
|
|
206
|
+
const { unusedPaths, usedPaths } = await this.getUnusedTemplatePaths({
|
|
207
|
+
globPaths: [(0, path_1.join)(gitRoot, '**/*.{hbs,handlebars}')],
|
|
208
|
+
cwd: gitRoot,
|
|
209
|
+
state,
|
|
210
|
+
});
|
|
211
|
+
const suggestions = unusedPaths.map((path) => ({
|
|
212
|
+
path,
|
|
213
|
+
}));
|
|
214
|
+
const connectedSuggestions = usedPaths.map((path) => ({
|
|
215
|
+
path,
|
|
216
|
+
connected: true,
|
|
217
|
+
}));
|
|
218
|
+
return { suggestions: [...suggestions, ...connectedSuggestions] };
|
|
219
|
+
};
|
|
220
|
+
getMeta = () => ({
|
|
221
|
+
id: this.id,
|
|
222
|
+
title: 'Handlebars',
|
|
223
|
+
aliasUse: 'off',
|
|
224
|
+
aliasTitle: '',
|
|
225
|
+
aliasDescription: '',
|
|
226
|
+
enableDataDemos: true,
|
|
227
|
+
enableTemplateDemos: true,
|
|
228
|
+
hasSlotsSupport: true,
|
|
229
|
+
hasSlotOptionsSupport: true,
|
|
230
|
+
version: pkg.version,
|
|
231
|
+
hasInferSpecSupport: false,
|
|
232
|
+
hasTemplateSuggestionsSupport: true,
|
|
233
|
+
prototypingTemplate: {
|
|
234
|
+
path: '@knapsack/renderer-hbs/prototype-template.hbs',
|
|
235
|
+
spec: {
|
|
236
|
+
isInferred: false,
|
|
237
|
+
props: {
|
|
238
|
+
type: 'object',
|
|
239
|
+
properties: {},
|
|
240
|
+
},
|
|
241
|
+
slots: {
|
|
242
|
+
content: { title: 'Content' },
|
|
243
|
+
},
|
|
244
|
+
},
|
|
245
|
+
},
|
|
246
|
+
});
|
|
245
247
|
}
|
|
246
248
|
exports.KnapsackHbsRenderer = KnapsackHbsRenderer;
|
|
247
249
|
//# sourceMappingURL=renderer-hbs.js.map
|
package/dist/renderer-hbs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-hbs.js","sourceRoot":"","sources":["../src/renderer-hbs.ts"],"names":[],"mappings":";;;;;;AAAA,uCAA+C;AAC/C,uDAMiC;AACjC,qDAA4E;AAC5E,2CAMyB;AACzB,+BAA4B;AAC5B,4DAA6B;AAC7B,6DAAuC;AACvC,6BAAwB;AACxB,mCAAiD;AAEjD,MAAM,EAAE,GAAG,EAAE,GAAG,IAAA,0BAAa,EAAC,SAAS,CAAC,CAAC;AACzC,MAAM,OAAO,GAAG,IAAA,wBAAW,GAAE,CAAC;AAI9B,MAAM,YAAY,GAAG,OAAC,CAAC,YAAY,CAAC;IAClC;;;OAGG;IACH,eAAe,EAAE,OAAC;SACf,MAAM,
|
|
1
|
+
{"version":3,"file":"renderer-hbs.js","sourceRoot":"","sources":["../src/renderer-hbs.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@knapsack/renderer-hbs",
|
|
3
3
|
"description": "",
|
|
4
|
-
"version": "5.0.0
|
|
4
|
+
"version": "5.0.0",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"exports": {
|
|
@@ -22,24 +22,24 @@
|
|
|
22
22
|
"test": "vitest run --typecheck.enabled"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@knapsack/app": "5.0.0
|
|
26
|
-
"@knapsack/file-utils": "5.0.0
|
|
27
|
-
"@knapsack/types": "5.0.0
|
|
28
|
-
"@knapsack/utils": "5.0.0
|
|
29
|
-
"handlebars": "^4.7.
|
|
30
|
-
"lodash": "^4.
|
|
31
|
-
"zod": "^4.
|
|
25
|
+
"@knapsack/app": "5.0.0",
|
|
26
|
+
"@knapsack/file-utils": "5.0.0",
|
|
27
|
+
"@knapsack/types": "5.0.0",
|
|
28
|
+
"@knapsack/utils": "5.0.0",
|
|
29
|
+
"handlebars": "^4.7.9",
|
|
30
|
+
"lodash": "^4.18.1",
|
|
31
|
+
"zod": "^4.3.6"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@knapsack/eslint-config-starter": "5.0.0
|
|
35
|
-
"@knapsack/prettier-config": "5.0.0
|
|
36
|
-
"@knapsack/sandbox-components": "5.0.0
|
|
37
|
-
"@knapsack/typescript-config-starter": "5.0.0
|
|
38
|
-
"@types/lodash": "^4.17.
|
|
39
|
-
"@types/node": "^
|
|
40
|
-
"eslint": "^
|
|
41
|
-
"typescript": "^5.9.
|
|
42
|
-
"vitest": "^
|
|
34
|
+
"@knapsack/eslint-config-starter": "5.0.0",
|
|
35
|
+
"@knapsack/prettier-config": "5.0.0",
|
|
36
|
+
"@knapsack/sandbox-components": "5.0.0",
|
|
37
|
+
"@knapsack/typescript-config-starter": "5.0.0",
|
|
38
|
+
"@types/lodash": "^4.17.23",
|
|
39
|
+
"@types/node": "^22.19.11",
|
|
40
|
+
"eslint": "^9.20.0",
|
|
41
|
+
"typescript": "^5.9.3",
|
|
42
|
+
"vitest": "^4.1.9"
|
|
43
43
|
},
|
|
44
44
|
"license": "GPL-2.0-or-later",
|
|
45
45
|
"publishConfig": {
|
|
@@ -50,5 +50,5 @@
|
|
|
50
50
|
"directory": "apps/client/renderers/renderer-hbs",
|
|
51
51
|
"type": "git"
|
|
52
52
|
},
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "31e09ba72245b95bef52e73ce5076de51936286c"
|
|
54
54
|
}
|
package/.eslintignore
DELETED
|
File without changes
|