@paroicms/script-lib 0.2.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/README.md ADDED
@@ -0,0 +1,9 @@
1
+ # @paroicms/script-lib
2
+
3
+ Node.js utilitaries.
4
+
5
+ This package is part of [ParoiCMS](https://www.npmjs.com/package/@paroicms/server).
6
+
7
+ ## License
8
+
9
+ Released under the [MIT license](https://gitlab.com/paroi/opensource/paroicms/-/blob/main/LICENSE.md).
@@ -0,0 +1,9 @@
1
+ export declare function esmDirName(moduleUrl: string): string;
2
+ export declare function extractDependencyVersionSync(dirName: string, packageName: string, options?: {
3
+ exact?: boolean;
4
+ type?: "dev" | "peer";
5
+ }): string;
6
+ export declare function extractPackageNameAndVersionSync(packageDir: string): {
7
+ name: string;
8
+ version: string;
9
+ };
@@ -0,0 +1,33 @@
1
+ import { type } from "arktype";
2
+ import { readFileSync } from "node:fs";
3
+ import { dirname, join, resolve } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ export function esmDirName(moduleUrl) {
6
+ return resolve(dirname(fileURLToPath(moduleUrl)));
7
+ }
8
+ export function extractDependencyVersionSync(dirName, packageName, options = {}) {
9
+ const packageJsonPath = resolve(dirName, "package.json");
10
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8"));
11
+ const propName = options.type === "dev"
12
+ ? "devDependencies"
13
+ : options.type === "peer"
14
+ ? "peerDependencies"
15
+ : "dependencies";
16
+ const version = packageJson[propName]?.[packageName];
17
+ if (!version) {
18
+ throw new Error(`missing "${packageName}"${options.type ? ` ${options.type}` : ""} dependency`);
19
+ }
20
+ if (options.exact && !version.match(/^[0-9]+\.[0-9]+\.[0-9]+$/)) {
21
+ throw new Error(`invalid ${packageName} version: "${version}" (please use an exact x.x.x version)`);
22
+ }
23
+ return version;
24
+ }
25
+ export function extractPackageNameAndVersionSync(packageDir) {
26
+ const packageJson = JSON.parse(readFileSync(join(packageDir, "package.json"), "utf-8"));
27
+ return type({
28
+ name: "string",
29
+ version: "string",
30
+ "+": "ignore",
31
+ }).assert(packageJson);
32
+ }
33
+ //# sourceMappingURL=esm-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esm-helpers.js","sourceRoot":"","sources":["../src/esm-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,UAAU,CAAC,SAAiB;IAC1C,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,OAAe,EACf,WAAmB,EACnB,UAAsD,EAAE;IAExD,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;IACvE,MAAM,QAAQ,GACZ,OAAO,CAAC,IAAI,KAAK,KAAK;QACpB,CAAC,CAAC,iBAAiB;QACnB,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM;YACvB,CAAC,CAAC,kBAAkB;YACpB,CAAC,CAAC,cAAc,CAAC;IACvB,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,CAAuB,CAAC;IAC3E,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,YAAY,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CACb,WAAW,WAAW,cAAc,OAAO,uCAAuC,CACnF,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,UAAkB;IAIjE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACxF,OAAO,IAAI,CAAC;QACV,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,QAAQ;QACjB,GAAG,EAAE,QAAQ;KACd,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./esm-helpers.js";
2
+ export * from "./plugin-helpers.js";
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from "./esm-helpers.js";
2
+ export * from "./plugin-helpers.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function getPluginApiUrl(packageName: string): string;
2
+ export declare function getPluginSlug(packageName: string): string;
@@ -0,0 +1,19 @@
1
+ import { generateSlug } from "@paroicms/public-anywhere-lib";
2
+ export function getPluginApiUrl(packageName) {
3
+ return `/api/plugin/${getPluginSlug(packageName)}`;
4
+ }
5
+ export function getPluginSlug(packageName) {
6
+ let slug;
7
+ if (packageName.startsWith("@paroicms/")) {
8
+ slug = packageName.substring(10);
9
+ }
10
+ else if (packageName.startsWith("@")) {
11
+ // For other scoped packages, keep the scope but replace slash with dash
12
+ slug = packageName.substring(1).replace("/", "-");
13
+ }
14
+ else {
15
+ slug = packageName;
16
+ }
17
+ return generateSlug(slug);
18
+ }
19
+ //# sourceMappingURL=plugin-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-helpers.js","sourceRoot":"","sources":["../src/plugin-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,MAAM,UAAU,eAAe,CAAC,WAAmB;IACjD,OAAO,eAAe,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,IAAI,IAAY,CAAC;IAEjB,IAAI,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACzC,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;SAAM,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,wEAAwE;QACxE,IAAI,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC"}
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@paroicms/script-lib",
3
+ "version": "0.2.0",
4
+ "description": "Node.js utilitaries.",
5
+ "author": "Paroi Team",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://gitlab.com/paroi/opensource/paroicms.git",
9
+ "directory": "packages/script-lib"
10
+ },
11
+ "license": "MIT",
12
+ "type": "module",
13
+ "main": "dist/index.js",
14
+ "types": "dist/index.d.ts",
15
+ "scripts": {
16
+ "build": "tsc",
17
+ "test:watch": "vitest",
18
+ "test": "vitest run",
19
+ "clear": "rimraf dist/*",
20
+ "dev": "tsc --watch --preserveWatchOutput"
21
+ },
22
+ "dependencies": {
23
+ "@paroicms/internal-anywhere-lib": "1.33.0",
24
+ "arktype": "~2.1.20"
25
+ },
26
+ "devDependencies": {
27
+ "@types/node": "~24.0.1",
28
+ "rimraf": "~6.0.1",
29
+ "typescript": "~5.8.3"
30
+ },
31
+ "files": [
32
+ "dist"
33
+ ]
34
+ }