@schemavaults/theme 0.23.1 → 0.24.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
CHANGED
|
@@ -38,27 +38,10 @@ export default config;
|
|
|
38
38
|
|
|
39
39
|
// Import the config factory
|
|
40
40
|
import { SchemaVaultsTailwindConfigFactory } from "@schemavaults/theme";
|
|
41
|
-
|
|
42
|
-
import { lstatSync, existsSync, type Stats } from "fs";
|
|
43
|
-
|
|
44
|
-
function isdir(path: string): boolean {
|
|
45
|
-
if (!existsSync(path)) return false;
|
|
46
|
-
|
|
47
|
-
let lstatResult: Stats;
|
|
48
|
-
try {
|
|
49
|
-
lstatResult = lstatSync(path);
|
|
50
|
-
} catch (e: unknown) {
|
|
51
|
-
throw new Error(
|
|
52
|
-
"Error running lstatSync for tailwind.config.ts isdir() function!",
|
|
53
|
-
);
|
|
54
|
-
}
|
|
55
|
-
return lstatResult.isDirectory();
|
|
56
|
-
}
|
|
41
|
+
|
|
57
42
|
|
|
58
43
|
// Initialize the config factory
|
|
59
44
|
const configFactory = new SchemaVaultsTailwindConfigFactory({
|
|
60
|
-
isdir,
|
|
61
|
-
join,
|
|
62
45
|
scope: 'schemavaults'
|
|
63
46
|
});
|
|
64
47
|
|
|
@@ -67,7 +50,7 @@ const config = configFactory.createConfig({
|
|
|
67
50
|
content: [
|
|
68
51
|
"./src/**/*.tsx|jsx|js|ts",
|
|
69
52
|
"./app/**/*.tsx|jsx|js|ts",
|
|
70
|
-
"@schemavaults/ui", // resolved and converted to an absolute path to the schemavaults package in the node_modules folder
|
|
53
|
+
"@schemavaults/ui", // resolved and converted to an absolute path to the schemavaults package in the node_modules folder. i.e. @schemavaults/ui => .../node_modules/@schemavaults/ui/dist/**/*.tsx|jsx|js|ts
|
|
71
54
|
"@schemavaults/schema-ui",
|
|
72
55
|
],
|
|
73
56
|
});
|
|
@@ -4,8 +4,6 @@ import type { TailwindTheme } from "./TailwindTheme";
|
|
|
4
4
|
type OsJoinFn = (path_segment: string, ...remaining_path_segments: string[]) => string;
|
|
5
5
|
export interface ISchemaVaultsTailwindConfigFactoryInitOptions {
|
|
6
6
|
debug?: boolean;
|
|
7
|
-
join?: OsJoinFn;
|
|
8
|
-
isdir?: (path: string) => boolean;
|
|
9
7
|
scope?: string;
|
|
10
8
|
fileExtensions?: readonly string[];
|
|
11
9
|
project_root?: string;
|
|
@@ -23,12 +21,14 @@ export declare class SchemaVaultsTailwindConfigFactory implements ISchemaVaultsT
|
|
|
23
21
|
protected readonly debug: boolean;
|
|
24
22
|
protected readonly join: OsJoinFn;
|
|
25
23
|
protected readonly isdir: (path: string) => boolean;
|
|
24
|
+
protected readonly isfile: (path: string) => boolean;
|
|
26
25
|
protected readonly scope: string;
|
|
27
26
|
protected readonly project_root: string;
|
|
28
|
-
protected static readonly defaultFileExtensionsToSearch: readonly ["js", "jsx", "ts", "tsx"];
|
|
27
|
+
protected static readonly defaultFileExtensionsToSearch: readonly ["js", "jsx", "ts", "tsx", "svelte"];
|
|
29
28
|
protected readonly fileExtensionsToIncludeInTailwindClassNamesSearch: readonly string[];
|
|
30
29
|
private static defaultJoinImplementation;
|
|
31
30
|
private static defaultIsDirImplementation;
|
|
31
|
+
private static defaultIsFileImplementation;
|
|
32
32
|
constructor(opts?: ISchemaVaultsTailwindConfigFactoryInitOptions);
|
|
33
33
|
/**
|
|
34
34
|
* @description Load TailwindCSS plugins to use in theme configuration
|
|
@@ -40,7 +40,12 @@ export declare class SchemaVaultsTailwindConfigFactory implements ISchemaVaultsT
|
|
|
40
40
|
protected get brandColors(): ThemeValue;
|
|
41
41
|
protected get screenSizes(): Record<ScreenBreakpointID, `${number}px`>;
|
|
42
42
|
protected get themeExtension(): ThemeExtension;
|
|
43
|
-
|
|
43
|
+
/**
|
|
44
|
+
*
|
|
45
|
+
* @param org_scoped_package_identifier A string representing an organization-scoped package identifier. For example: @schemavaults/ui
|
|
46
|
+
* @returns The resolved path for the organization-scoped package. I.e. the path that contains the package.json file
|
|
47
|
+
*/
|
|
48
|
+
protected resolveOrganizationScopedPackagePath(org_scoped_package_identifier: string): string;
|
|
44
49
|
private static possibleBuildDirectories;
|
|
45
50
|
createConfig(opts?: ISchemaVaultsTailwindConfigCreationOptions): TailwindConfig;
|
|
46
51
|
}
|
|
@@ -3,6 +3,7 @@ import { brandColors } from "./brand_colors";
|
|
|
3
3
|
import DefaultOrgScope from "./DefaultOrgScope"; // @schemavaults organization is default
|
|
4
4
|
import { getScreenBreakpoint, listScreenBreakpoints, } from "./ScreenBreakpoints";
|
|
5
5
|
import { existsSync, lstatSync } from "fs";
|
|
6
|
+
import { normalize, join, dirname } from "path";
|
|
6
7
|
// TailwindCSS Plugins:
|
|
7
8
|
import tailwindAnimatePlugin from "./plugins/tailwindcss-animate";
|
|
8
9
|
import * as resolve from "resolve";
|
|
@@ -10,6 +11,7 @@ export class SchemaVaultsTailwindConfigFactory {
|
|
|
10
11
|
debug;
|
|
11
12
|
join;
|
|
12
13
|
isdir;
|
|
14
|
+
isfile;
|
|
13
15
|
scope;
|
|
14
16
|
project_root;
|
|
15
17
|
static defaultFileExtensionsToSearch = [
|
|
@@ -17,14 +19,11 @@ export class SchemaVaultsTailwindConfigFactory {
|
|
|
17
19
|
"jsx",
|
|
18
20
|
"ts",
|
|
19
21
|
"tsx",
|
|
22
|
+
"svelte",
|
|
20
23
|
];
|
|
21
24
|
fileExtensionsToIncludeInTailwindClassNamesSearch;
|
|
22
25
|
static defaultJoinImplementation(path_segment, ...remaining_path_segments) {
|
|
23
|
-
|
|
24
|
-
path_segment,
|
|
25
|
-
...remaining_path_segments,
|
|
26
|
-
];
|
|
27
|
-
return path_segments.join("/");
|
|
26
|
+
return join(path_segment, ...remaining_path_segments);
|
|
28
27
|
}
|
|
29
28
|
static defaultIsDirImplementation(maybeDirPath) {
|
|
30
29
|
if (!existsSync(maybeDirPath)) {
|
|
@@ -32,19 +31,20 @@ export class SchemaVaultsTailwindConfigFactory {
|
|
|
32
31
|
}
|
|
33
32
|
return lstatSync(maybeDirPath).isDirectory();
|
|
34
33
|
}
|
|
34
|
+
static defaultIsFileImplementation(maybeFilePath) {
|
|
35
|
+
if (!existsSync(maybeFilePath)) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
return lstatSync(maybeFilePath).isFile();
|
|
39
|
+
}
|
|
35
40
|
constructor(opts) {
|
|
36
41
|
this.debug = opts?.debug ?? false;
|
|
37
42
|
if (this.debug) {
|
|
38
43
|
console.log("[SchemaVaultsTailwindConfigFactory] constructor()");
|
|
39
44
|
}
|
|
40
|
-
this.join =
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
: SchemaVaultsTailwindConfigFactory.defaultJoinImplementation;
|
|
44
|
-
this.isdir =
|
|
45
|
-
typeof opts?.isdir === "function"
|
|
46
|
-
? opts.isdir
|
|
47
|
-
: SchemaVaultsTailwindConfigFactory.defaultIsDirImplementation;
|
|
45
|
+
this.join = SchemaVaultsTailwindConfigFactory.defaultJoinImplementation;
|
|
46
|
+
this.isdir = SchemaVaultsTailwindConfigFactory.defaultIsDirImplementation;
|
|
47
|
+
this.isfile = SchemaVaultsTailwindConfigFactory.defaultIsFileImplementation;
|
|
48
48
|
this.scope = opts?.scope ?? DefaultOrgScope;
|
|
49
49
|
if (this.scope.startsWith("@")) {
|
|
50
50
|
throw new Error("Don't pass the @ in the scope, we'll handle adding passing that!");
|
|
@@ -97,12 +97,17 @@ export class SchemaVaultsTailwindConfigFactory {
|
|
|
97
97
|
};
|
|
98
98
|
return extend;
|
|
99
99
|
}
|
|
100
|
-
|
|
100
|
+
/**
|
|
101
|
+
*
|
|
102
|
+
* @param org_scoped_package_identifier A string representing an organization-scoped package identifier. For example: @schemavaults/ui
|
|
103
|
+
* @returns The resolved path for the organization-scoped package. I.e. the path that contains the package.json file
|
|
104
|
+
*/
|
|
105
|
+
resolveOrganizationScopedPackagePath(org_scoped_package_identifier) {
|
|
101
106
|
const scope = this.scope;
|
|
102
|
-
if (!
|
|
107
|
+
if (!org_scoped_package_identifier.startsWith(`@${scope}/`)) {
|
|
103
108
|
throw new Error(`This method should only be called if content path starts with @${scope}/...`);
|
|
104
109
|
}
|
|
105
|
-
const pkg_blob_parts =
|
|
110
|
+
const pkg_blob_parts = org_scoped_package_identifier.split("/");
|
|
106
111
|
if (pkg_blob_parts.length < 2 ||
|
|
107
112
|
!pkg_blob_parts[1] ||
|
|
108
113
|
typeof pkg_blob_parts[1] !== "string") {
|
|
@@ -118,6 +123,43 @@ export class SchemaVaultsTailwindConfigFactory {
|
|
|
118
123
|
if (typeof package_path !== "string") {
|
|
119
124
|
throw new TypeError("Failed to resolve package path; result not a string!");
|
|
120
125
|
}
|
|
126
|
+
// Helper function that checks if this is the root directory of a package
|
|
127
|
+
const isAPackageRootDir = (current_path) => {
|
|
128
|
+
if (!this.isdir(current_path)) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
if (this.join(current_path, "package.json")) {
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}; // end fn isAPackageRootDir()
|
|
140
|
+
// Package path should have been loaded-- but 'resolve' likely returns path to:
|
|
141
|
+
// node_modules/@{org}/{pkg}/dist/index.js, not the package root directory
|
|
142
|
+
// We need to traverse upwards until we find the directory containing package.json
|
|
143
|
+
// Or, if we hit node_modules/ and haven't found package.json, throw an error
|
|
144
|
+
let current_path = package_path;
|
|
145
|
+
while (current_path !== "/" && current_path !== "") {
|
|
146
|
+
if (isAPackageRootDir(current_path)) {
|
|
147
|
+
break;
|
|
148
|
+
}
|
|
149
|
+
if (!existsSync(current_path)) {
|
|
150
|
+
throw new Error(`Error resolving package root directory for '@${scope}/${package_name}'`);
|
|
151
|
+
}
|
|
152
|
+
if (this.isdir(current_path)) {
|
|
153
|
+
current_path = normalize(this.join(current_path, ".."));
|
|
154
|
+
}
|
|
155
|
+
else if (this.isfile(current_path)) {
|
|
156
|
+
current_path = dirname(current_path);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
throw new Error("Expected current path to be either a directory or a file!");
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
package_path = current_path;
|
|
121
163
|
if (!this.isdir(package_path)) {
|
|
122
164
|
throw new Error(`Expected there to be a directory for package '@${scope}/${package_name}' at path '${package_path}'!`);
|
|
123
165
|
}
|
|
@@ -126,6 +168,9 @@ export class SchemaVaultsTailwindConfigFactory {
|
|
|
126
168
|
console.error(`Failed to resolve path to package '@${scope}/${package_name}':`, e);
|
|
127
169
|
throw new Error(`Failed to resolve path to package: '@${scope}/${package_name}'!`);
|
|
128
170
|
}
|
|
171
|
+
if (this.debug) {
|
|
172
|
+
console.log(`[SchemaVaultsTailwindConfigFactory] Resolved root directory of package '@${scope}/${package_name}' to directory: `, package_path);
|
|
173
|
+
}
|
|
129
174
|
return package_path;
|
|
130
175
|
}
|
|
131
176
|
static possibleBuildDirectories = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TailwindConfigFactory.js","sourceRoot":"","sources":["../src/TailwindConfigFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,eAAe,MAAM,mBAAmB,CAAC,CAAC,wCAAwC;AACzF,OAAO,EACL,mBAAmB,EACnB,qBAAqB,GAEtB,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"TailwindConfigFactory.js","sourceRoot":"","sources":["../src/TailwindConfigFactory.ts"],"names":[],"mappings":"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"}
|