@blocklet/pages-kit-block-studio 0.0.6 → 0.0.7
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/lib/cjs/block-studio/generate-wrapper-code.js +130 -11
- package/lib/cjs/block-studio/init-resource-router.js +2 -2
- package/lib/cjs/tsconfig.tsbuildinfo +1 -1
- package/lib/esm/block-studio/generate-wrapper-code.js +130 -11
- package/lib/esm/block-studio/init-resource-router.js +2 -2
- package/lib/esm/tsconfig.tsbuildinfo +1 -1
- package/lib/types/block-studio/generate-wrapper-code.d.ts +1 -1
- package/lib/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -44,7 +44,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
44
44
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
45
|
exports.generateWrapperCode = generateWrapperCode;
|
|
46
46
|
function generateWrapperCode(_a) {
|
|
47
|
-
return __awaiter(this, arguments, void 0, function* ({ project,
|
|
47
|
+
return __awaiter(this, arguments, void 0, function* ({ project, version }) {
|
|
48
48
|
const projectName = (project.name || project.id).toLowerCase().replaceAll(/[^a-z0-9]/g, '_');
|
|
49
49
|
const packageName = `@pages-kit-project/${projectName}`;
|
|
50
50
|
const packageJson = JSON.stringify({
|
|
@@ -57,6 +57,7 @@ function generateWrapperCode(_a) {
|
|
|
57
57
|
'@blocklet/pages-kit-runtime': 'latest',
|
|
58
58
|
'@blocklet/pages-kit-inner-components': 'latest',
|
|
59
59
|
'@blocklet/pages-kit': 'latest',
|
|
60
|
+
'@blocklet/uploader-server': 'latest',
|
|
60
61
|
},
|
|
61
62
|
exports: {
|
|
62
63
|
'.': {
|
|
@@ -69,34 +70,152 @@ function generateWrapperCode(_a) {
|
|
|
69
70
|
import: './client.js',
|
|
70
71
|
types: './client.d.ts',
|
|
71
72
|
},
|
|
73
|
+
'./middleware': {
|
|
74
|
+
require: './middleware.cjs',
|
|
75
|
+
import: './middleware.js',
|
|
76
|
+
types: './middleware.d.ts',
|
|
77
|
+
},
|
|
72
78
|
},
|
|
73
79
|
}, null, 2);
|
|
74
80
|
const index = `\
|
|
75
81
|
import HomeComponent from '@blocklet/pages-kit-runtime/client';
|
|
76
|
-
export * from '@blocklet/pages-kit-runtime/client';
|
|
77
|
-
import React from 'react';
|
|
78
|
-
|
|
79
|
-
window.__PAGE_STATE__ = ${JSON.stringify(state, null, 2)};
|
|
80
|
-
window.__PROJECT_ID__ = "${project.id}";
|
|
81
|
-
|
|
82
82
|
|
|
83
|
-
// 导出一个 React 组件而不是实例
|
|
84
83
|
export default HomeComponent;
|
|
85
84
|
`;
|
|
86
85
|
const client = index;
|
|
86
|
+
const middleware = `
|
|
87
|
+
import { initResourceRouter } from '@blocklet/pages-kit-block-studio/block-studio/init-resource-router';
|
|
88
|
+
import { getPreloadComponents } from '@blocklet/pages-kit-inner-components/components';
|
|
89
|
+
import { initPackResourceStates } from '@blocklet/pages-kit-inner-components/site-state';
|
|
90
|
+
import { Router } from 'express';
|
|
91
|
+
|
|
92
|
+
const { initProxyToMediaKitUploadsMiddleware, initStaticResourceMiddleware } = require('@blocklet/uploader-server');
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
const router = Router();
|
|
96
|
+
|
|
97
|
+
router.use('/api/resources', initResourceRouter);
|
|
98
|
+
|
|
99
|
+
let tempStates: any[] = [];
|
|
100
|
+
let allResourcesComponents: any[] = [];
|
|
101
|
+
|
|
102
|
+
initPackResourceStates(({ states }: any) => {
|
|
103
|
+
allResourcesComponents = states.reduce((acc, { state }) => {
|
|
104
|
+
if (state.components) {
|
|
105
|
+
return { ...acc, ...state.components };
|
|
106
|
+
}
|
|
107
|
+
return acc;
|
|
108
|
+
}, {});
|
|
109
|
+
tempStates = states;
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
router.get('/api/pages', (req, res) => {
|
|
113
|
+
const { did } = req.query;
|
|
114
|
+
|
|
115
|
+
if (!did) {
|
|
116
|
+
return res.status(400).json({ message: 'did is required' });
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const data = tempStates.find((state) => state.did === did);
|
|
120
|
+
|
|
121
|
+
res.json(data);
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
router.post('/api/components/preload', async (req, res) => {
|
|
125
|
+
const { mode, module, instances: inputInstances, locale } = req.body;
|
|
126
|
+
|
|
127
|
+
// Find state by matching component IDs with tempStates
|
|
128
|
+
const state = tempStates.find((s) =>
|
|
129
|
+
inputInstances.some((instance) => {
|
|
130
|
+
return s.state.components && Object.keys(s.state.components).includes(instance.component.id);
|
|
131
|
+
}),
|
|
132
|
+
)?.state;
|
|
133
|
+
|
|
134
|
+
const instances = inputInstances.map((instance) => {
|
|
135
|
+
const component = allResourcesComponents[instance.component.id].data;
|
|
136
|
+
|
|
137
|
+
if (!component) return null;
|
|
138
|
+
|
|
139
|
+
return {
|
|
140
|
+
id: instance.id,
|
|
141
|
+
componentId: component.id,
|
|
142
|
+
properties: instance.properties,
|
|
143
|
+
useCache: instance.useCache,
|
|
144
|
+
cacheDuration: instance.cacheDuration,
|
|
145
|
+
};
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
if (!state) {
|
|
149
|
+
return res.status(400).json({ message: 'state not found' });
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
const result = await getPreloadComponents({
|
|
153
|
+
mode,
|
|
154
|
+
req,
|
|
155
|
+
state: state,
|
|
156
|
+
locale: locale,
|
|
157
|
+
module: module,
|
|
158
|
+
instances: instances,
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
res.json(result);
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
router.use(
|
|
166
|
+
'/uploads',
|
|
167
|
+
// initProxyToMediaKitUploadsMiddleware({
|
|
168
|
+
// express,
|
|
169
|
+
// }),
|
|
170
|
+
initStaticResourceMiddleware({
|
|
171
|
+
express,
|
|
172
|
+
resourceTypes: [
|
|
173
|
+
// image bin resource
|
|
174
|
+
{
|
|
175
|
+
type: 'imgpack',
|
|
176
|
+
did: 'z8ia1mAXo8ZE7ytGF36L5uBf9kD2kenhqFGp9',
|
|
177
|
+
},
|
|
178
|
+
// pages kit resource (pages and components folder)
|
|
179
|
+
{
|
|
180
|
+
type: 'page',
|
|
181
|
+
did: 'z8iZiDFg3vkkrPwsiba1TLXy3H9XHzFERsP8o',
|
|
182
|
+
folder: ['pages', 'components'],
|
|
183
|
+
blacklist: ['.yml'],
|
|
184
|
+
},
|
|
185
|
+
],
|
|
186
|
+
}),
|
|
187
|
+
(_req, res) => {
|
|
188
|
+
res.status(404).send('404 NOT FOUND').end();
|
|
189
|
+
},
|
|
190
|
+
);
|
|
191
|
+
|
|
192
|
+
export default router;
|
|
193
|
+
`;
|
|
87
194
|
const tsFiles = [
|
|
88
195
|
{ fileName: 'index.ts', content: index },
|
|
89
196
|
{ fileName: 'client.ts', content: client },
|
|
197
|
+
{ fileName: 'middleware.ts', content: middleware },
|
|
90
198
|
];
|
|
91
199
|
const ts = yield Promise.resolve().then(() => __importStar(require('typescript')));
|
|
200
|
+
const compilerOptions = {
|
|
201
|
+
jsx: ts.JsxEmit.React,
|
|
202
|
+
esModuleInterop: true,
|
|
203
|
+
skipLibCheck: true,
|
|
204
|
+
declaration: true,
|
|
205
|
+
};
|
|
92
206
|
const result = (yield Promise.all(tsFiles.map((_a) => __awaiter(this, [_a], void 0, function* ({ fileName, content }) {
|
|
93
207
|
const cjs = ts.transpileModule(content, {
|
|
94
208
|
fileName,
|
|
95
|
-
compilerOptions: { module: ts.ModuleKind.CommonJS },
|
|
209
|
+
compilerOptions: Object.assign(Object.assign({}, compilerOptions), { module: ts.ModuleKind.CommonJS }),
|
|
96
210
|
});
|
|
97
211
|
const esm = ts.transpileModule(content, {
|
|
98
212
|
fileName,
|
|
99
|
-
compilerOptions: { module: ts.ModuleKind.ESNext },
|
|
213
|
+
compilerOptions: Object.assign(Object.assign({}, compilerOptions), { module: ts.ModuleKind.ESNext }),
|
|
214
|
+
});
|
|
215
|
+
// Generate proper type declarations
|
|
216
|
+
const dts = ts.transpileModule(content, {
|
|
217
|
+
fileName,
|
|
218
|
+
compilerOptions: Object.assign(Object.assign({}, compilerOptions), { declaration: true, emitDeclarationOnly: true }),
|
|
100
219
|
});
|
|
101
220
|
return [
|
|
102
221
|
{
|
|
@@ -109,7 +228,7 @@ export default HomeComponent;
|
|
|
109
228
|
},
|
|
110
229
|
{
|
|
111
230
|
fileName: fileName.replace(/\.ts$/, '.d.ts'),
|
|
112
|
-
content,
|
|
231
|
+
content: dts.outputText || content, // Fallback to original content if declaration fails
|
|
113
232
|
},
|
|
114
233
|
];
|
|
115
234
|
})))).flat();
|
|
@@ -101,7 +101,7 @@ const getExportDir = (projectId, releaseId) => {
|
|
|
101
101
|
return dir;
|
|
102
102
|
};
|
|
103
103
|
exports.initResourceRouter = (0, express_1.Router)();
|
|
104
|
-
exports.initResourceRouter.get('/
|
|
104
|
+
exports.initResourceRouter.get('/', (_req, res) => __awaiter(void 0, void 0, void 0, function* () {
|
|
105
105
|
const resources = [];
|
|
106
106
|
const rootDir = process.cwd();
|
|
107
107
|
const files = (0, utils_1.findComponentFiles)({ cwd: rootDir });
|
|
@@ -130,7 +130,7 @@ exports.initResourceRouter.get('/resources', (_req, res) => __awaiter(void 0, vo
|
|
|
130
130
|
],
|
|
131
131
|
});
|
|
132
132
|
}));
|
|
133
|
-
exports.initResourceRouter.post('/
|
|
133
|
+
exports.initResourceRouter.post('/', (req, res) => __awaiter(void 0, void 0, void 0, function* () {
|
|
134
134
|
const { resources, projectId, releaseId } = req.body;
|
|
135
135
|
// ignore all tag
|
|
136
136
|
const componentIds = resources.filter((resource) => resource.id !== allTag);
|