@saltcorn/server 1.1.1-beta.6 → 1.1.1-beta.8
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/markup/blockly.js +4 -4
- package/package.json +9 -9
- package/public/blockly/blockly_compressed.js +2016 -0
- package/public/blockly/blockly_compressed.js.map +1 -0
- package/public/blockly/blocks_compressed.js +212 -0
- package/public/blockly/blocks_compressed.js.map +1 -0
- package/public/blockly/javascript_compressed.js +121 -0
- package/public/blockly/javascript_compressed.js.map +1 -0
- package/public/blockly/msg/ab.js +440 -0
- package/public/blockly/msg/ace.js +440 -0
- package/public/blockly/msg/af.js +440 -0
- package/public/blockly/msg/am.js +440 -0
- package/public/blockly/msg/ar.js +440 -0
- package/public/blockly/msg/ast.js +440 -0
- package/public/blockly/msg/az.js +440 -0
- package/public/blockly/msg/ba.js +440 -0
- package/public/blockly/msg/bcc.js +440 -0
- package/public/blockly/msg/be-tarask.js +440 -0
- package/public/blockly/msg/be.js +440 -0
- package/public/blockly/msg/bg.js +440 -0
- package/public/blockly/msg/bn.js +440 -0
- package/public/blockly/msg/br.js +440 -0
- package/public/blockly/msg/bs.js +440 -0
- package/public/blockly/msg/ca.js +440 -0
- package/public/blockly/msg/cdo.js +440 -0
- package/public/blockly/msg/cs.js +440 -0
- package/public/blockly/msg/da.js +440 -0
- package/public/blockly/msg/de.js +440 -0
- package/public/blockly/msg/diq.js +440 -0
- package/public/blockly/msg/dty.js +440 -0
- package/public/blockly/msg/ee.js +440 -0
- package/public/blockly/msg/el.js +440 -0
- package/public/blockly/msg/en-gb.js +440 -0
- package/public/blockly/msg/en.js +440 -0
- package/public/blockly/msg/eo.js +440 -0
- package/public/blockly/msg/es.js +440 -0
- package/public/blockly/msg/et.js +440 -0
- package/public/blockly/msg/eu.js +440 -0
- package/public/blockly/msg/fa.js +440 -0
- package/public/blockly/msg/fi.js +440 -0
- package/public/blockly/msg/fo.js +440 -0
- package/public/blockly/msg/fr.js +440 -0
- package/public/blockly/msg/frr.js +440 -0
- package/public/blockly/msg/gl.js +440 -0
- package/public/blockly/msg/gn.js +440 -0
- package/public/blockly/msg/gor.js +440 -0
- package/public/blockly/msg/ha.js +440 -0
- package/public/blockly/msg/hak.js +440 -0
- package/public/blockly/msg/he.js +440 -0
- package/public/blockly/msg/hi.js +440 -0
- package/public/blockly/msg/hr.js +440 -0
- package/public/blockly/msg/hrx.js +440 -0
- package/public/blockly/msg/hu.js +440 -0
- package/public/blockly/msg/hy.js +440 -0
- package/public/blockly/msg/ia.js +440 -0
- package/public/blockly/msg/id.js +440 -0
- package/public/blockly/msg/ig.js +440 -0
- package/public/blockly/msg/inh.js +440 -0
- package/public/blockly/msg/is.js +440 -0
- package/public/blockly/msg/it.js +440 -0
- package/public/blockly/msg/ja.js +440 -0
- package/public/blockly/msg/ka.js +440 -0
- package/public/blockly/msg/kab.js +440 -0
- package/public/blockly/msg/kbd-cyrl.js +440 -0
- package/public/blockly/msg/km.js +440 -0
- package/public/blockly/msg/kn.js +440 -0
- package/public/blockly/msg/ko.js +440 -0
- package/public/blockly/msg/ksh.js +440 -0
- package/public/blockly/msg/ku-latn.js +440 -0
- package/public/blockly/msg/ky.js +440 -0
- package/public/blockly/msg/la.js +440 -0
- package/public/blockly/msg/lb.js +440 -0
- package/public/blockly/msg/lki.js +440 -0
- package/public/blockly/msg/lo.js +440 -0
- package/public/blockly/msg/lrc.js +440 -0
- package/public/blockly/msg/lt.js +440 -0
- package/public/blockly/msg/lv.js +440 -0
- package/public/blockly/msg/mg.js +440 -0
- package/public/blockly/msg/mk.js +440 -0
- package/public/blockly/msg/ml.js +440 -0
- package/public/blockly/msg/mnw.js +440 -0
- package/public/blockly/msg/ms.js +440 -0
- package/public/blockly/msg/msg.d.ts +444 -0
- package/public/blockly/msg/my.js +440 -0
- package/public/blockly/msg/mzn.js +440 -0
- package/public/blockly/msg/nb.js +440 -0
- package/public/blockly/msg/ne.js +440 -0
- package/public/blockly/msg/nl.js +440 -0
- package/public/blockly/msg/oc.js +440 -0
- package/public/blockly/msg/olo.js +440 -0
- package/public/blockly/msg/pa.js +440 -0
- package/public/blockly/msg/pl.js +440 -0
- package/public/blockly/msg/pms.js +440 -0
- package/public/blockly/msg/ps.js +440 -0
- package/public/blockly/msg/pt-br.js +440 -0
- package/public/blockly/msg/pt.js +440 -0
- package/public/blockly/msg/ro.js +440 -0
- package/public/blockly/msg/ru.js +440 -0
- package/public/blockly/msg/sc.js +440 -0
- package/public/blockly/msg/sco.js +440 -0
- package/public/blockly/msg/sd.js +440 -0
- package/public/blockly/msg/shn.js +440 -0
- package/public/blockly/msg/si.js +440 -0
- package/public/blockly/msg/sk.js +440 -0
- package/public/blockly/msg/skr-arab.js +440 -0
- package/public/blockly/msg/sl.js +440 -0
- package/public/blockly/msg/smn.js +440 -0
- package/public/blockly/msg/sq.js +440 -0
- package/public/blockly/msg/sr-latn.js +440 -0
- package/public/blockly/msg/sr.js +440 -0
- package/public/blockly/msg/sv.js +440 -0
- package/public/blockly/msg/sw.js +440 -0
- package/public/blockly/msg/ta.js +440 -0
- package/public/blockly/msg/tcy.js +440 -0
- package/public/blockly/msg/te.js +440 -0
- package/public/blockly/msg/th.js +440 -0
- package/public/blockly/msg/ti.js +440 -0
- package/public/blockly/msg/tl.js +440 -0
- package/public/blockly/msg/tlh.js +440 -0
- package/public/blockly/msg/tr.js +440 -0
- package/public/blockly/msg/ug-arab.js +440 -0
- package/public/blockly/msg/uk.js +440 -0
- package/public/blockly/msg/ur.js +440 -0
- package/public/blockly/msg/uz.js +440 -0
- package/public/blockly/msg/vi.js +440 -0
- package/public/blockly/msg/xmf.js +440 -0
- package/public/blockly/msg/yo.js +440 -0
- package/public/blockly/msg/yue.js +440 -0
- package/public/blockly/msg/zgh.js +440 -0
- package/public/blockly/msg/zh-hans.js +440 -0
- package/public/blockly/msg/zh-hant.js +440 -0
- package/routes/actions.js +13 -7
- package/routes/common_lists.js +6 -4
- package/routes/plugins.js +0 -32
- package/routes/tables.js +3 -1
- package/serve.js +52 -1
- package/tests/plugins.test.js +2 -2
package/serve.js
CHANGED
|
@@ -50,7 +50,9 @@ const {
|
|
|
50
50
|
} = require("@saltcorn/admin-models/models/tenant");
|
|
51
51
|
const { auto_backup_now } = require("@saltcorn/admin-models/models/backup");
|
|
52
52
|
const Snapshot = require("@saltcorn/admin-models/models/snapshot");
|
|
53
|
-
const { writeFileSync } = require("fs");
|
|
53
|
+
const { writeFileSync, rmdirSync, readFileSync } = require("fs");
|
|
54
|
+
const { pathExistsSync } = require("fs-extra");
|
|
55
|
+
const envPaths = require("env-paths");
|
|
54
56
|
|
|
55
57
|
const take_snapshot = async () => {
|
|
56
58
|
return await Snapshot.take_if_changed();
|
|
@@ -88,6 +90,54 @@ const ensureEnginesCache = async () => {
|
|
|
88
90
|
}
|
|
89
91
|
};
|
|
90
92
|
|
|
93
|
+
/**
|
|
94
|
+
* validate all plugins folders and remove invalid entries
|
|
95
|
+
* A folder is invalid when it has dependencies but not node_modules directory
|
|
96
|
+
*/
|
|
97
|
+
const ensurePluginsFolder = async () => {
|
|
98
|
+
const rootFolder = envPaths("saltcorn", { suffix: "plugins" }).data;
|
|
99
|
+
const staticDeps = ["@saltcorn/markup", "@saltcorn/data", "jest"];
|
|
100
|
+
const allPluginFolders = new Set();
|
|
101
|
+
await eachTenant(async () => {
|
|
102
|
+
const allPlugins = (await Plugin.find()).filter(
|
|
103
|
+
(p) => !["base", "sbadmin2"].includes(p.name)
|
|
104
|
+
);
|
|
105
|
+
for (const plugin of allPlugins) {
|
|
106
|
+
const tokens =
|
|
107
|
+
plugin.source === "npm"
|
|
108
|
+
? plugin.location.split("/")
|
|
109
|
+
: plugin.name.split("/");
|
|
110
|
+
const pluginDir = path.join(
|
|
111
|
+
rootFolder,
|
|
112
|
+
plugin.source === "git" ? "git_plugins" : "plugins_folder",
|
|
113
|
+
...tokens
|
|
114
|
+
);
|
|
115
|
+
allPluginFolders.add(pluginDir);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
for (const folder of allPluginFolders) {
|
|
119
|
+
try {
|
|
120
|
+
if (pathExistsSync(folder)) {
|
|
121
|
+
const packageJson = JSON.parse(
|
|
122
|
+
readFileSync(path.join(folder, "package.json"))
|
|
123
|
+
);
|
|
124
|
+
if (
|
|
125
|
+
(Object.keys(packageJson.dependencies || {}).some(
|
|
126
|
+
(d) => !staticDeps.includes(d)
|
|
127
|
+
) ||
|
|
128
|
+
Object.keys(packageJson.devDependencies || {}).some(
|
|
129
|
+
(d) => !staticDeps.includes(d)
|
|
130
|
+
)) &&
|
|
131
|
+
!pathExistsSync(path.join(folder, "node_modules"))
|
|
132
|
+
)
|
|
133
|
+
rmdirSync(folder, { recursive: true });
|
|
134
|
+
}
|
|
135
|
+
} catch (e) {
|
|
136
|
+
console.log(`Error checking plugin folder: ${e.message || e}`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
|
|
91
141
|
// helpful https://gist.github.com/jpoehls/2232358
|
|
92
142
|
/**
|
|
93
143
|
* @param {object} opts
|
|
@@ -236,6 +286,7 @@ module.exports =
|
|
|
236
286
|
if (cluster.isMaster) {
|
|
237
287
|
ensureJwtSecret();
|
|
238
288
|
await ensureEnginesCache();
|
|
289
|
+
await ensurePluginsFolder();
|
|
239
290
|
}
|
|
240
291
|
process.on("unhandledRejection", (reason, p) => {
|
|
241
292
|
console.error(reason, "Unhandled Rejection at Promise");
|
package/tests/plugins.test.js
CHANGED
|
@@ -92,7 +92,7 @@ describe("Plugin Endpoints", () => {
|
|
|
92
92
|
.expect(toInclude("testfilecontents"));
|
|
93
93
|
await request(app)
|
|
94
94
|
.get(
|
|
95
|
-
"/plugins/
|
|
95
|
+
"/plugins/public/sbadmin2@9.9.9/sb-admin-2.min.css"
|
|
96
96
|
)
|
|
97
97
|
.expect(toInclude("Start Bootstrap"));
|
|
98
98
|
|
|
@@ -102,7 +102,7 @@ describe("Plugin Endpoints", () => {
|
|
|
102
102
|
.expect(toRedirect("/plugins"));
|
|
103
103
|
await request(app)
|
|
104
104
|
.get(
|
|
105
|
-
"/plugins/
|
|
105
|
+
"/plugins/public/sbadmin2@9.9.9/sb-admin-2.min.css"
|
|
106
106
|
)
|
|
107
107
|
.expect(toInclude("Start Bootstrap"));
|
|
108
108
|
});
|