chalknotes 0.0.34 → 1.0.1
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 +144 -188
- package/bin/chalknotes.js +31 -0
- package/bin/cli.js +27 -288
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +196 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/scaffold.d.ts +6 -0
- package/dist/commands/scaffold.d.ts.map +1 -0
- package/dist/commands/scaffold.js +196 -0
- package/dist/commands/scaffold.js.map +1 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +163 -0
- package/dist/index.js.map +1 -0
- package/dist/notion/client.d.ts +14 -0
- package/dist/notion/client.d.ts.map +1 -0
- package/dist/notion/client.js +191 -0
- package/dist/notion/client.js.map +1 -0
- package/dist/plugins/parser.d.ts +10 -0
- package/dist/plugins/parser.d.ts.map +1 -0
- package/dist/plugins/parser.js +310 -0
- package/dist/plugins/parser.js.map +1 -0
- package/dist/templates/components.d.ts +4 -0
- package/dist/templates/components.d.ts.map +1 -0
- package/dist/templates/components.js +557 -0
- package/dist/templates/components.js.map +1 -0
- package/dist/templates/pages.d.ts +4 -0
- package/dist/templates/pages.d.ts.map +1 -0
- package/dist/templates/pages.js +321 -0
- package/dist/templates/pages.js.map +1 -0
- package/dist/types/index.d.ts +64 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/config.d.ts +12 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +99 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/detection.d.ts +19 -0
- package/dist/utils/detection.d.ts.map +1 -0
- package/dist/utils/detection.js +246 -0
- package/dist/utils/detection.js.map +1 -0
- package/dist/utils/logger.d.ts +10 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +62 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +47 -10
- package/templates/example-config.js +34 -0
- package/templates/example-env +3 -0
- package/src/index.js +0 -10
- package/src/lib/getAllPosts.js +0 -35
- package/src/lib/getPostBySlug.js +0 -380
- package/src/lib/nextHelpers.js +0 -36
- package/src/lib/notion.js +0 -11
- package/src/utils.js +0 -6
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ProjectDetector = void 0;
|
|
37
|
+
const fs = __importStar(require("fs-extra"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
class ProjectDetector {
|
|
40
|
+
constructor(cwd = process.cwd()) {
|
|
41
|
+
this.cwd = cwd;
|
|
42
|
+
}
|
|
43
|
+
async detect() {
|
|
44
|
+
const [isNextJs, isAppRouter, hasTailwind, hasStyledComponents, hasCSSModules, hasTypeScript, packageManager] = await Promise.all([
|
|
45
|
+
this.detectNextJs(),
|
|
46
|
+
this.detectAppRouter(),
|
|
47
|
+
this.detectTailwind(),
|
|
48
|
+
this.detectStyledComponents(),
|
|
49
|
+
this.detectCSSModules(),
|
|
50
|
+
this.detectTypeScript(),
|
|
51
|
+
this.detectPackageManager()
|
|
52
|
+
]);
|
|
53
|
+
return {
|
|
54
|
+
isNextJs,
|
|
55
|
+
isAppRouter,
|
|
56
|
+
hasTailwind,
|
|
57
|
+
hasStyledComponents,
|
|
58
|
+
hasCSSModules,
|
|
59
|
+
hasTypeScript,
|
|
60
|
+
packageManager
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
async detectNextJs() {
|
|
64
|
+
try {
|
|
65
|
+
const packageJson = await this.readPackageJson();
|
|
66
|
+
return !!(packageJson.dependencies?.next ||
|
|
67
|
+
packageJson.devDependencies?.next);
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
async detectAppRouter() {
|
|
74
|
+
try {
|
|
75
|
+
const appDir = path.join(this.cwd, 'app');
|
|
76
|
+
const pagesDir = path.join(this.cwd, 'pages');
|
|
77
|
+
const [appExists, pagesExists] = await Promise.all([
|
|
78
|
+
fs.pathExists(appDir),
|
|
79
|
+
fs.pathExists(pagesDir)
|
|
80
|
+
]);
|
|
81
|
+
// If both exist, check which has more structure (prefer app router)
|
|
82
|
+
if (appExists && pagesExists) {
|
|
83
|
+
const appContents = await fs.readdir(appDir).catch(() => []);
|
|
84
|
+
const hasAppLayout = appContents.includes('layout.tsx') || appContents.includes('layout.js');
|
|
85
|
+
return hasAppLayout;
|
|
86
|
+
}
|
|
87
|
+
return appExists;
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
async detectTailwind() {
|
|
94
|
+
try {
|
|
95
|
+
const [packageJson, tailwindConfig, hasGlobalCss] = await Promise.all([
|
|
96
|
+
this.readPackageJson(),
|
|
97
|
+
this.hasTailwindConfig(),
|
|
98
|
+
this.hasGlobalTailwindCss()
|
|
99
|
+
]);
|
|
100
|
+
const hasPackage = !!(packageJson.dependencies?.tailwindcss ||
|
|
101
|
+
packageJson.devDependencies?.tailwindcss);
|
|
102
|
+
return hasPackage || tailwindConfig || hasGlobalCss;
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async detectStyledComponents() {
|
|
109
|
+
try {
|
|
110
|
+
const packageJson = await this.readPackageJson();
|
|
111
|
+
return !!(packageJson.dependencies?.['styled-components'] ||
|
|
112
|
+
packageJson.devDependencies?.['styled-components']);
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
async detectCSSModules() {
|
|
119
|
+
try {
|
|
120
|
+
const nextConfig = await this.readNextConfig();
|
|
121
|
+
if (nextConfig?.cssModules !== undefined) {
|
|
122
|
+
return nextConfig.cssModules;
|
|
123
|
+
}
|
|
124
|
+
// Check for .module.css files
|
|
125
|
+
const cssFiles = await this.findFiles(['**/*.module.css', '**/*.module.scss']);
|
|
126
|
+
return cssFiles.length > 0;
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
async detectTypeScript() {
|
|
133
|
+
try {
|
|
134
|
+
const [hasTsConfig, packageJson] = await Promise.all([
|
|
135
|
+
fs.pathExists(path.join(this.cwd, 'tsconfig.json')),
|
|
136
|
+
this.readPackageJson()
|
|
137
|
+
]);
|
|
138
|
+
const hasTypescript = !!(packageJson.dependencies?.typescript ||
|
|
139
|
+
packageJson.devDependencies?.typescript);
|
|
140
|
+
return hasTsConfig || hasTypescript;
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
async detectPackageManager() {
|
|
147
|
+
try {
|
|
148
|
+
const [hasYarnLock, hasPnpmLock, hasBunLock, hasPackageLock] = await Promise.all([
|
|
149
|
+
fs.pathExists(path.join(this.cwd, 'yarn.lock')),
|
|
150
|
+
fs.pathExists(path.join(this.cwd, 'pnpm-lock.yaml')),
|
|
151
|
+
fs.pathExists(path.join(this.cwd, 'bun.lockb')),
|
|
152
|
+
fs.pathExists(path.join(this.cwd, 'package-lock.json'))
|
|
153
|
+
]);
|
|
154
|
+
if (hasBunLock)
|
|
155
|
+
return 'bun';
|
|
156
|
+
if (hasPnpmLock)
|
|
157
|
+
return 'pnpm';
|
|
158
|
+
if (hasYarnLock)
|
|
159
|
+
return 'yarn';
|
|
160
|
+
if (hasPackageLock)
|
|
161
|
+
return 'npm';
|
|
162
|
+
// Default to npm if no lock files found
|
|
163
|
+
return 'npm';
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
return 'npm';
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
async readPackageJson() {
|
|
170
|
+
const packagePath = path.join(this.cwd, 'package.json');
|
|
171
|
+
const content = await fs.readFile(packagePath, 'utf-8');
|
|
172
|
+
return JSON.parse(content);
|
|
173
|
+
}
|
|
174
|
+
async readNextConfig() {
|
|
175
|
+
const configPaths = [
|
|
176
|
+
'next.config.js',
|
|
177
|
+
'next.config.mjs',
|
|
178
|
+
'next.config.ts'
|
|
179
|
+
];
|
|
180
|
+
for (const configPath of configPaths) {
|
|
181
|
+
try {
|
|
182
|
+
const fullPath = path.join(this.cwd, configPath);
|
|
183
|
+
if (await fs.pathExists(fullPath)) {
|
|
184
|
+
// Simple regex-based extraction for CSS modules config
|
|
185
|
+
const content = await fs.readFile(fullPath, 'utf-8');
|
|
186
|
+
const cssModulesMatch = content.match(/cssModules\s*:\s*(true|false)/);
|
|
187
|
+
if (cssModulesMatch) {
|
|
188
|
+
return { cssModules: cssModulesMatch[1] === 'true' };
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
catch {
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return {};
|
|
197
|
+
}
|
|
198
|
+
async hasTailwindConfig() {
|
|
199
|
+
const configPaths = [
|
|
200
|
+
'tailwind.config.js',
|
|
201
|
+
'tailwind.config.ts',
|
|
202
|
+
'tailwind.config.mjs'
|
|
203
|
+
];
|
|
204
|
+
for (const configPath of configPaths) {
|
|
205
|
+
if (await fs.pathExists(path.join(this.cwd, configPath))) {
|
|
206
|
+
return true;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return false;
|
|
210
|
+
}
|
|
211
|
+
async hasGlobalTailwindCss() {
|
|
212
|
+
const possiblePaths = [
|
|
213
|
+
'app/globals.css',
|
|
214
|
+
'pages/_app.css',
|
|
215
|
+
'styles/globals.css',
|
|
216
|
+
'src/app/globals.css',
|
|
217
|
+
'src/styles/globals.css'
|
|
218
|
+
];
|
|
219
|
+
for (const cssPath of possiblePaths) {
|
|
220
|
+
try {
|
|
221
|
+
const fullPath = path.join(this.cwd, cssPath);
|
|
222
|
+
if (await fs.pathExists(fullPath)) {
|
|
223
|
+
const content = await fs.readFile(fullPath, 'utf-8');
|
|
224
|
+
if (content.includes('@tailwind')) {
|
|
225
|
+
return true;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
catch {
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
return false;
|
|
234
|
+
}
|
|
235
|
+
async findFiles(patterns) {
|
|
236
|
+
try {
|
|
237
|
+
const glob = require('fast-glob');
|
|
238
|
+
return await glob(patterns, { cwd: this.cwd });
|
|
239
|
+
}
|
|
240
|
+
catch {
|
|
241
|
+
return [];
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
exports.ProjectDetector = ProjectDetector;
|
|
246
|
+
//# sourceMappingURL=detection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detection.js","sourceRoot":"","sources":["../../src/utils/detection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare class Logger {
|
|
2
|
+
static info(message: string): void;
|
|
3
|
+
static success(message: string): void;
|
|
4
|
+
static warn(message: string): void;
|
|
5
|
+
static error(message: string): void;
|
|
6
|
+
static step(step: number, total: number, message: string): void;
|
|
7
|
+
static title(message: string): void;
|
|
8
|
+
static section(message: string): void;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAEA,qBAAa,MAAM;IACjB,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIlC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIrC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIlC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAInC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAI/D,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAInC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAGtC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.Logger = void 0;
|
|
37
|
+
const pc = __importStar(require("picocolors"));
|
|
38
|
+
class Logger {
|
|
39
|
+
static info(message) {
|
|
40
|
+
console.log(pc.blue('ℹ'), message);
|
|
41
|
+
}
|
|
42
|
+
static success(message) {
|
|
43
|
+
console.log(pc.green('✅'), message);
|
|
44
|
+
}
|
|
45
|
+
static warn(message) {
|
|
46
|
+
console.log(pc.yellow('⚠️'), message);
|
|
47
|
+
}
|
|
48
|
+
static error(message) {
|
|
49
|
+
console.log(pc.red('❌'), message);
|
|
50
|
+
}
|
|
51
|
+
static step(step, total, message) {
|
|
52
|
+
console.log(pc.cyan(`[${step}/${total}]`), message);
|
|
53
|
+
}
|
|
54
|
+
static title(message) {
|
|
55
|
+
console.log('\n' + pc.bold(pc.magenta('🚀 ' + message)) + '\n');
|
|
56
|
+
}
|
|
57
|
+
static section(message) {
|
|
58
|
+
console.log('\n' + pc.bold(message));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
exports.Logger = Logger;
|
|
62
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAiC;AAEjC,MAAa,MAAM;IACjB,MAAM,CAAC,IAAI,CAAC,OAAe;QACzB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe;QACzB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAe;QAC1B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAAY,EAAE,KAAa,EAAE,OAAe;QACtD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAe;QAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IACvC,CAAC;CACF;AA5BD,wBA4BC"}
|
package/package.json
CHANGED
|
@@ -1,22 +1,59 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chalknotes",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
5
|
-
"main": "
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Transform your Notion pages into beautiful developer blogs with intelligent framework detection and plugin architecture",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
7
|
-
"chalknotes": "./bin/
|
|
7
|
+
"chalknotes": "./bin/chalknotes.js"
|
|
8
8
|
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"bin",
|
|
12
|
+
"templates",
|
|
13
|
+
"README.md"
|
|
14
|
+
],
|
|
9
15
|
"scripts": {
|
|
10
|
-
"
|
|
16
|
+
"build": "tsc",
|
|
17
|
+
"dev": "tsc --watch",
|
|
18
|
+
"prepublishOnly": "npm run build"
|
|
11
19
|
},
|
|
12
20
|
"keywords": [
|
|
21
|
+
"notion",
|
|
13
22
|
"blog",
|
|
14
|
-
"
|
|
23
|
+
"nextjs",
|
|
24
|
+
"developer",
|
|
25
|
+
"cli",
|
|
26
|
+
"markdown",
|
|
27
|
+
"cms"
|
|
15
28
|
],
|
|
16
|
-
"author": "
|
|
29
|
+
"author": "ChalkNotes Team",
|
|
17
30
|
"license": "MIT",
|
|
18
31
|
"dependencies": {
|
|
19
32
|
"@notionhq/client": "^4.0.1",
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
|
|
33
|
+
"chalk": "^4.1.2",
|
|
34
|
+
"commander": "^12.0.0",
|
|
35
|
+
"dotenv": "^16.4.5",
|
|
36
|
+
"fast-glob": "^3.3.2",
|
|
37
|
+
"fs-extra": "^11.2.0",
|
|
38
|
+
"inquirer": "^8.2.6",
|
|
39
|
+
"ora": "^5.4.1",
|
|
40
|
+
"picocolors": "^1.0.0"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"@types/fs-extra": "^11.0.4",
|
|
44
|
+
"@types/inquirer": "^8.2.10",
|
|
45
|
+
"@types/node": "^20.11.17",
|
|
46
|
+
"typescript": "^5.3.3"
|
|
47
|
+
},
|
|
48
|
+
"engines": {
|
|
49
|
+
"node": ">=16.0.0"
|
|
50
|
+
},
|
|
51
|
+
"repository": {
|
|
52
|
+
"type": "git",
|
|
53
|
+
"url": "https://github.com/chalknotes/chalknotes"
|
|
54
|
+
},
|
|
55
|
+
"bugs": {
|
|
56
|
+
"url": "https://github.com/chalknotes/chalknotes/issues"
|
|
57
|
+
},
|
|
58
|
+
"homepage": "https://chalknotes.dev"
|
|
59
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
notionToken: process.env.NOTION_TOKEN,
|
|
3
|
+
notionDatabaseId: process.env.NOTION_DATABASE_ID,
|
|
4
|
+
routeBasePath: '/blog',
|
|
5
|
+
theme: 'modern', // 'modern' | 'minimal' | 'dev'
|
|
6
|
+
|
|
7
|
+
// Define plugins here instead of CLI prompts
|
|
8
|
+
// Built-in plugins work with @@PluginName syntax in your Notion content
|
|
9
|
+
plugins: [
|
|
10
|
+
// Example plugin configurations:
|
|
11
|
+
// '@chalknotes/syntax-highlighter', // For enhanced code highlighting
|
|
12
|
+
// '@chalknotes/analytics', // For tracking blog performance
|
|
13
|
+
// '@chalknotes/seo', // For search engine optimization
|
|
14
|
+
// '@chalknotes/comments', // For comment sections
|
|
15
|
+
],
|
|
16
|
+
|
|
17
|
+
caching: {
|
|
18
|
+
enabled: true,
|
|
19
|
+
ttl: 3600 // 1 hour
|
|
20
|
+
},
|
|
21
|
+
errorBoundaries: true,
|
|
22
|
+
|
|
23
|
+
customization: {
|
|
24
|
+
colors: {
|
|
25
|
+
primary: '#3b82f6',
|
|
26
|
+
accent: '#8b5cf6'
|
|
27
|
+
},
|
|
28
|
+
fonts: {
|
|
29
|
+
heading: 'Inter',
|
|
30
|
+
body: 'Inter',
|
|
31
|
+
mono: 'JetBrains Mono'
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
};
|
package/src/index.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
const { getAllPosts } = require('./lib/getAllPosts');
|
|
2
|
-
const { getPostBySlug } = require('./lib/getPostBySlug');
|
|
3
|
-
const { getStaticPropsForPost, getStaticPathsForPosts } = require('./lib/nextHelpers');
|
|
4
|
-
|
|
5
|
-
module.exports = {
|
|
6
|
-
getAllPosts,
|
|
7
|
-
getPostBySlug,
|
|
8
|
-
getStaticPropsForPost,
|
|
9
|
-
getStaticPathsForPosts
|
|
10
|
-
}
|
package/src/lib/getAllPosts.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
const { notion, dbId } = require('./notion');
|
|
2
|
-
const { slugify } = require('../utils');
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const getAllPosts = async () => {
|
|
6
|
-
const response = await notion.databases.query({
|
|
7
|
-
database_id: dbId,
|
|
8
|
-
filter: {
|
|
9
|
-
property: "Published",
|
|
10
|
-
checkbox: {
|
|
11
|
-
equals: true
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
})
|
|
15
|
-
|
|
16
|
-
const posts = []
|
|
17
|
-
console.log(response.results.length)
|
|
18
|
-
for (const page of response.results) {
|
|
19
|
-
const titleProperty = page.properties["Name"];
|
|
20
|
-
const title = titleProperty?.title?.[0]?.plain_text;
|
|
21
|
-
const pageSlug = slugify(title);
|
|
22
|
-
|
|
23
|
-
console.log(title, pageSlug, page.id)
|
|
24
|
-
posts.push({
|
|
25
|
-
title,
|
|
26
|
-
slug: pageSlug,
|
|
27
|
-
notionPageId: page.id,
|
|
28
|
-
})
|
|
29
|
-
}
|
|
30
|
-
return posts
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
module.exports = {
|
|
34
|
-
getAllPosts
|
|
35
|
-
}
|