chalknotes 1.0.0 → 1.0.2
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/README.md +9 -8
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/plugins/parser.d.ts.map +1 -1
- package/dist/plugins/parser.js +19 -12
- package/dist/plugins/parser.js.map +1 -1
- package/dist/templates/components.d.ts.map +1 -1
- package/dist/templates/components.js +24 -4
- package/dist/templates/components.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -91,17 +91,18 @@ module.exports = {
|
|
|
91
91
|
|
|
92
92
|
## 🧩 Plugin System
|
|
93
93
|
|
|
94
|
-
ChalkNotes features a powerful plugin architecture with inline syntax parsing. Simply add plugin syntax anywhere in your Notion content:
|
|
94
|
+
ChalkNotes features a powerful plugin architecture with inline syntax parsing. Simply add plugin syntax anywhere in your Notion content using the `{{PluginName[params]}}` format:
|
|
95
95
|
|
|
96
96
|
### Built-in Plugins
|
|
97
97
|
|
|
98
98
|
```markdown
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
99
|
+
{{CommentSection}} - Add a comment section
|
|
100
|
+
{{TableOfContents}} - Generate table of contents
|
|
101
|
+
{{ReadingTime}} - Show estimated reading time
|
|
102
|
+
{{Share[twitter,linkedin]}} - Add share buttons
|
|
103
|
+
{{CodePen[pen-id]}} - Embed CodePen
|
|
104
|
+
{{Tweet[tweet-id]}} - Embed Twitter tweets
|
|
105
|
+
{{YouTube[video-id]}} - Embed YouTube videos
|
|
105
106
|
```
|
|
106
107
|
|
|
107
108
|
### Custom Plugins
|
|
@@ -113,7 +114,7 @@ import { registerPlugin } from 'chalknotes';
|
|
|
113
114
|
|
|
114
115
|
registerPlugin({
|
|
115
116
|
name: 'CustomWidget',
|
|
116
|
-
syntax:
|
|
117
|
+
syntax: /\{\{CustomWidget\[([^\]]+)\]\}\}/g,
|
|
117
118
|
render: (match, context) => {
|
|
118
119
|
const config = match[1];
|
|
119
120
|
return `<div class="custom-widget">${config}</div>`;
|
package/dist/commands/init.js
CHANGED
|
@@ -86,7 +86,7 @@ async function init(options = {}) {
|
|
|
86
86
|
logger_1.Logger.info('3. Run "chalknotes scaffold" to generate your blog pages');
|
|
87
87
|
logger_1.Logger.info('4. Start your development server to see your blog');
|
|
88
88
|
logger_1.Logger.section('Built-in plugins available:');
|
|
89
|
-
logger_1.Logger.info('Use
|
|
89
|
+
logger_1.Logger.info('Use {{CommentSection}}, {{TableOfContents}}, {{Share}}, {{ReadingTime}} in your Notion content');
|
|
90
90
|
}
|
|
91
91
|
catch (error) {
|
|
92
92
|
logger_1.Logger.error(`Initialization failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,oBA8DC;AA3ED,uCAAyB;AACzB,2CAA6B;AAC7B,kDAAqD;AACrD,4CAAgD;AAChD,4CAAyC;AAGzC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAM9B,KAAK,UAAU,IAAI,CAAC,UAAuB,EAAE;IAClD,eAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAEjC,IAAI,CAAC;QACH,4BAA4B;QAC5B,eAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,oCAAoC,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,IAAI,2BAAe,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC;QAE1C,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YACxB,eAAM,CAAC,KAAK,CAAC,gGAAgG,CAAC,CAAC;YAC/G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,eAAM,CAAC,OAAO,CAAC,6BAA6B,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC;QACtG,eAAM,CAAC,IAAI,CAAC,kBAAkB,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5D,eAAM,CAAC,IAAI,CAAC,eAAe,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACrE,eAAM,CAAC,IAAI,CAAC,oBAAoB,SAAS,CAAC,cAAc,EAAE,CAAC,CAAC;QAE5D,uCAAuC;QACvC,eAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,oCAAoC,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,IAAI,sBAAa,EAAE,CAAC;QAE1C,IAAI,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC7C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;gBAC1C;oBACE,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,iEAAiE;oBAC1E,OAAO,EAAE,KAAK;iBACf;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,eAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;gBAC5E,OAAO;YACT,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,eAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,qCAAqC,CAAC,CAAC;QACzD,MAAM,gBAAgB,EAAE,CAAC;QAEzB,+BAA+B;QAC/B,eAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,2BAA2B,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEjC,eAAM,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;QACvD,eAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC9B,eAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAC3D,eAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QACjE,eAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QACxE,eAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAEjE,eAAM,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;QAC9C,eAAM,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/plugins/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEjD,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAkC;IAEjD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIpC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/plugins/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEjD,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAkC;IAEjD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIpC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM;IAyC7D,mBAAmB,IAAI,MAAM,EAAE;CAGhC;AAGD,eAAO,MAAM,cAAc,EAAE,MAAM,EA6IlC,CAAC;AAGF,eAAO,MAAM,mBAAmB,qxEAwI/B,CAAC"}
|
package/dist/plugins/parser.js
CHANGED
|
@@ -10,8 +10,8 @@ class PluginParser {
|
|
|
10
10
|
}
|
|
11
11
|
parseContent(content, context) {
|
|
12
12
|
let parsedContent = content;
|
|
13
|
-
// Find all plugin syntax in the content
|
|
14
|
-
const pluginRegex =
|
|
13
|
+
// Find all plugin syntax in the content - using {{PluginName[params]}} syntax
|
|
14
|
+
const pluginRegex = /\{\{(\w+)(?:\[([^\]]*)\])?\}\}/g;
|
|
15
15
|
let match;
|
|
16
16
|
while ((match = pluginRegex.exec(content)) !== null) {
|
|
17
17
|
const [fullMatch, pluginName, parameters] = match;
|
|
@@ -19,9 +19,12 @@ class PluginParser {
|
|
|
19
19
|
if (plugin) {
|
|
20
20
|
try {
|
|
21
21
|
// Create a match array compatible with plugin.render
|
|
22
|
-
|
|
22
|
+
// match[1] should be the parameter (not the plugin name)
|
|
23
|
+
const matchArray = [fullMatch, parameters || ''];
|
|
23
24
|
matchArray.index = match.index;
|
|
24
25
|
matchArray.input = content;
|
|
26
|
+
// Debug logging
|
|
27
|
+
console.log(`Processing plugin: ${pluginName} with parameters: "${parameters}"`);
|
|
25
28
|
const replacement = plugin.render(matchArray, context);
|
|
26
29
|
parsedContent = parsedContent.replace(fullMatch, replacement);
|
|
27
30
|
}
|
|
@@ -47,7 +50,7 @@ exports.PluginParser = PluginParser;
|
|
|
47
50
|
exports.builtInPlugins = [
|
|
48
51
|
{
|
|
49
52
|
name: 'CodePen',
|
|
50
|
-
syntax:
|
|
53
|
+
syntax: /\{\{CodePen\[([^\]]+)\]\}\}/g,
|
|
51
54
|
render: (match, context) => {
|
|
52
55
|
const penId = match[1];
|
|
53
56
|
return `<iframe height="300" style="width: 100%;" scrolling="no" title="CodePen Embed" src="https://codepen.io/embed/${penId}?height=300&theme-id=dark&default-tab=result" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true"></iframe>`;
|
|
@@ -55,15 +58,19 @@ exports.builtInPlugins = [
|
|
|
55
58
|
},
|
|
56
59
|
{
|
|
57
60
|
name: 'Tweet',
|
|
58
|
-
syntax:
|
|
61
|
+
syntax: /\{\{Tweet\[([^\]]+)\]\}\}/g,
|
|
59
62
|
render: (match, context) => {
|
|
60
63
|
const tweetId = match[1];
|
|
61
|
-
return `<
|
|
64
|
+
return `<div class="tweet-embed" data-tweet-id="${tweetId}">
|
|
65
|
+
<blockquote class="twitter-tweet">
|
|
66
|
+
<a href="https://twitter.com/twitter/status/${tweetId}"></a>
|
|
67
|
+
</blockquote>
|
|
68
|
+
</div>`;
|
|
62
69
|
}
|
|
63
70
|
},
|
|
64
71
|
{
|
|
65
72
|
name: 'YouTube',
|
|
66
|
-
syntax:
|
|
73
|
+
syntax: /\{\{YouTube\[([^\]]+)\]\}\}/g,
|
|
67
74
|
render: (match, context) => {
|
|
68
75
|
const videoId = match[1];
|
|
69
76
|
return `<div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; background: #000;"><iframe src="https://www.youtube.com/embed/${videoId}" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;" frameborder="0" allowfullscreen></iframe></div>`;
|
|
@@ -71,7 +78,7 @@ exports.builtInPlugins = [
|
|
|
71
78
|
},
|
|
72
79
|
{
|
|
73
80
|
name: 'Gallery',
|
|
74
|
-
syntax:
|
|
81
|
+
syntax: /\{\{Gallery\[([^\]]+)\]\}\}/g,
|
|
75
82
|
render: (match, context) => {
|
|
76
83
|
const folder = match[1];
|
|
77
84
|
// This would need to be implemented based on your image storage solution
|
|
@@ -83,7 +90,7 @@ exports.builtInPlugins = [
|
|
|
83
90
|
},
|
|
84
91
|
{
|
|
85
92
|
name: 'CommentSection',
|
|
86
|
-
syntax:
|
|
93
|
+
syntax: /\{\{CommentSection(?:\[([^\]]*)\])?\}\}/g,
|
|
87
94
|
render: (match, context) => {
|
|
88
95
|
const config = match[1] || '';
|
|
89
96
|
return `<div class="comment-section" data-config="${config}">
|
|
@@ -97,7 +104,7 @@ exports.builtInPlugins = [
|
|
|
97
104
|
},
|
|
98
105
|
{
|
|
99
106
|
name: 'TableOfContents',
|
|
100
|
-
syntax:
|
|
107
|
+
syntax: /\{\{TableOfContents(?:\[([^\]]*)\])?\}\}/g,
|
|
101
108
|
render: (match, context) => {
|
|
102
109
|
// Generate TOC from post headings
|
|
103
110
|
const headings = context.post.blocks
|
|
@@ -123,7 +130,7 @@ exports.builtInPlugins = [
|
|
|
123
130
|
},
|
|
124
131
|
{
|
|
125
132
|
name: 'ReadingTime',
|
|
126
|
-
syntax:
|
|
133
|
+
syntax: /\{\{ReadingTime(?:\[([^\]]*)\])?\}\}/g,
|
|
127
134
|
render: (match, context) => {
|
|
128
135
|
const wordsPerMinute = 200;
|
|
129
136
|
const textContent = context.post.blocks
|
|
@@ -140,7 +147,7 @@ exports.builtInPlugins = [
|
|
|
140
147
|
},
|
|
141
148
|
{
|
|
142
149
|
name: 'Share',
|
|
143
|
-
syntax:
|
|
150
|
+
syntax: /\{\{Share(?:\[([^\]]*)\])?\}\}/g,
|
|
144
151
|
render: (match, context) => {
|
|
145
152
|
const platforms = match[1] ? match[1].split(',') : ['twitter', 'linkedin', 'facebook'];
|
|
146
153
|
const title = encodeURIComponent(context.post.title);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/plugins/parser.ts"],"names":[],"mappings":";;;AAEA,MAAa,YAAY;IAAzB;QACU,YAAO,GAAwB,IAAI,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/plugins/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/templates/components.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAEtE;
|
|
1
|
+
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../src/templates/components.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAEtE;AAubD,wBAAgB,kBAAkB,IAAI,MAAM,CAsI3C"}
|
|
@@ -8,7 +8,7 @@ function generateNotionRenderer(vars) {
|
|
|
8
8
|
function generateAppRouterRenderer(vars) {
|
|
9
9
|
const imageImport = 'import Image from "next/image";';
|
|
10
10
|
if (vars.hasTailwind) {
|
|
11
|
-
return `${vars.hasTypeScript ? 'import React from "react";' : ''}
|
|
11
|
+
return `${vars.hasTypeScript ? 'import React from "react";' : 'import React from "react";'}
|
|
12
12
|
${imageImport}
|
|
13
13
|
|
|
14
14
|
interface NotionBlock {
|
|
@@ -28,6 +28,21 @@ interface NotionRendererProps {
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
export default function NotionRenderer({ blocks }: NotionRendererProps) {
|
|
31
|
+
const [isClient, setIsClient] = React.useState(false);
|
|
32
|
+
|
|
33
|
+
React.useEffect(() => {
|
|
34
|
+
setIsClient(true);
|
|
35
|
+
|
|
36
|
+
// Load Twitter widgets script if tweet embeds exist
|
|
37
|
+
if (typeof window !== 'undefined' && !window.twttr) {
|
|
38
|
+
const script = document.createElement('script');
|
|
39
|
+
script.src = 'https://platform.twitter.com/widgets.js';
|
|
40
|
+
script.async = true;
|
|
41
|
+
script.charset = 'utf-8';
|
|
42
|
+
document.head.appendChild(script);
|
|
43
|
+
}
|
|
44
|
+
}, []);
|
|
45
|
+
|
|
31
46
|
if (!blocks || blocks.length === 0) return null;
|
|
32
47
|
|
|
33
48
|
return (
|
|
@@ -58,7 +73,11 @@ export default function NotionRenderer({ blocks }: NotionRendererProps) {
|
|
|
58
73
|
case "paragraph":
|
|
59
74
|
return (
|
|
60
75
|
<p key={i} className="leading-relaxed mb-4 text-gray-700 dark:text-gray-300">
|
|
61
|
-
{block.text
|
|
76
|
+
{block.text && block.text.includes('<') ? (
|
|
77
|
+
<span dangerouslySetInnerHTML={{ __html: block.text }} />
|
|
78
|
+
) : (
|
|
79
|
+
block.text
|
|
80
|
+
)}
|
|
62
81
|
</p>
|
|
63
82
|
);
|
|
64
83
|
|
|
@@ -100,14 +119,15 @@ export default function NotionRenderer({ blocks }: NotionRendererProps) {
|
|
|
100
119
|
|
|
101
120
|
case "image":
|
|
102
121
|
return (
|
|
103
|
-
<figure key={i} className="my-8">
|
|
104
|
-
<div className="relative overflow-hidden rounded-lg bg-gray-100 dark:bg-gray-800 border border-gray-200 dark:border-gray-700">
|
|
122
|
+
<figure key={i} className="flex flex-col justify-center items-center my-8">
|
|
123
|
+
<div className="relative w-fit overflow-hidden rounded-lg bg-gray-100 dark:bg-gray-800 border border-gray-200 dark:border-gray-700">
|
|
105
124
|
<Image
|
|
106
125
|
src={block.imageUrl || '/placeholder.jpg'}
|
|
107
126
|
alt={block.alt || 'Image'}
|
|
108
127
|
width={800}
|
|
109
128
|
height={400}
|
|
110
129
|
className="w-full h-auto object-cover"
|
|
130
|
+
unoptimized
|
|
111
131
|
/>
|
|
112
132
|
{block.caption && (
|
|
113
133
|
<figcaption className="text-sm text-center text-gray-500 dark:text-gray-400 mt-3 italic">
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/templates/components.ts"],"names":[],"mappings":";;AAEA,wDAEC;
|
|
1
|
+
{"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/templates/components.ts"],"names":[],"mappings":";;AAEA,wDAEC;AAubD,gDAsIC;AA/jBD,SAAgB,sBAAsB,CAAC,IAAuB;IAC5D,OAAO,yBAAyB,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAuB;IACxD,MAAM,WAAW,GAAG,iCAAiC,CAAC;IAEtD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,4BAA4B;EAC5F,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6IX,CAAC;IACD,CAAC;IAED,sBAAsB;IACtB,IAAI,IAAI,CAAC,YAAY,KAAK,aAAa,EAAE,CAAC;QACxC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,EAAE;EAClE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwGX,CAAC;IACD,CAAC;IAED,sCAAsC;IACtC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,EAAE;EAChE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6KX,CAAC;AACH,CAAC;AAED,SAAgB,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoIP,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chalknotes",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Transform your Notion pages into beautiful developer blogs with intelligent framework detection and plugin architecture",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -56,4 +56,4 @@
|
|
|
56
56
|
"url": "https://github.com/chalknotes/chalknotes/issues"
|
|
57
57
|
},
|
|
58
58
|
"homepage": "https://chalknotes.dev"
|
|
59
|
-
}
|
|
59
|
+
}
|