@geenius/tools 0.1.0 → 0.3.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/package.json +62 -3
- package/packages/convex/shared/README.md +1 -1
- package/packages/devtools/dist/index.d.ts +204 -0
- package/packages/devtools/dist/index.js +186 -0
- package/packages/devtools/dist/index.js.map +1 -0
- package/packages/devtools/react/README.md +1 -1
- package/packages/devtools/solidjs/README.md +1 -1
- package/packages/devtools/solidjs/dist/index.js +1830 -0
- package/packages/devtools/solidjs/dist/index.js.map +1 -0
- package/packages/env/dist/index.d.ts +151 -0
- package/packages/env/dist/index.js +93 -0
- package/packages/env/dist/index.js.map +1 -0
- package/packages/errors/dist/index.d.ts +177 -0
- package/packages/errors/dist/index.js +187 -0
- package/packages/errors/dist/index.js.map +1 -0
- package/packages/errors/react/README.md +1 -1
- package/packages/errors/solidjs/README.md +1 -1
- package/packages/logger/dist/index.d.ts +171 -0
- package/packages/logger/dist/index.js +216 -0
- package/packages/logger/dist/index.js.map +1 -0
- package/packages/logger/react/README.md +1 -1
- package/packages/logger/solidjs/README.md +1 -1
- package/packages/perf/dist/index.d.ts +168 -0
- package/packages/perf/dist/index.js +265 -0
- package/packages/perf/dist/index.js.map +1 -0
- package/packages/perf/react/README.md +1 -1
- package/packages/perf/solidjs/README.md +1 -1
- package/packages/shared/dist/index.d.ts +253 -0
- package/packages/shared/dist/index.js +278 -0
- package/packages/shared/dist/index.js.map +1 -0
- package/.changeset/config.json +0 -11
- package/.env.example +0 -2
- package/.github/CODEOWNERS +0 -1
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -16
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -11
- package/.github/PULL_REQUEST_TEMPLATE.md +0 -10
- package/.github/dependabot.yml +0 -11
- package/.github/workflows/ci.yml +0 -23
- package/.github/workflows/release.yml +0 -29
- package/.node-version +0 -1
- package/.nvmrc +0 -1
- package/.prettierrc +0 -7
- package/.project/ACCOUNT.yaml +0 -4
- package/.project/IDEAS.yaml +0 -7
- package/.project/PROJECT.yaml +0 -11
- package/.project/ROADMAP.yaml +0 -15
- package/CODE_OF_CONDUCT.md +0 -26
- package/CONTRIBUTING.md +0 -69
- package/SECURITY.md +0 -18
- package/SUPPORT.md +0 -14
- package/packages/convex/shared/package.json +0 -42
- package/packages/convex/shared/src/audit/index.ts +0 -5
- package/packages/convex/shared/src/audit/presets.ts +0 -165
- package/packages/convex/shared/src/audit/schema.ts +0 -85
- package/packages/convex/shared/src/audit/write.ts +0 -102
- package/packages/convex/shared/src/extract.ts +0 -75
- package/packages/convex/shared/src/index.ts +0 -41
- package/packages/convex/shared/src/messages.ts +0 -45
- package/packages/convex/shared/src/security.ts +0 -112
- package/packages/convex/shared/src/throw.ts +0 -184
- package/packages/convex/shared/src/types.ts +0 -57
- package/packages/convex/shared/src/utils.ts +0 -58
- package/packages/convex/shared/tsconfig.json +0 -28
- package/packages/convex/shared/tsup.config.ts +0 -12
- package/packages/devtools/package.json +0 -27
- package/packages/devtools/react/package.json +0 -53
- package/packages/devtools/react/src/components/DesignPreview.tsx +0 -59
- package/packages/devtools/react/src/components/DesignSwitcherDropdown.tsx +0 -99
- package/packages/devtools/react/src/components/DevSidebar.tsx +0 -247
- package/packages/devtools/react/src/components/DevToolbar.tsx +0 -242
- package/packages/devtools/react/src/components/GitHubIssueDialog.tsx +0 -402
- package/packages/devtools/react/src/components/InspectorOverlay.tsx +0 -312
- package/packages/devtools/react/src/components/PageLoadWaterfall.tsx +0 -144
- package/packages/devtools/react/src/components/PerformancePanel.tsx +0 -330
- package/packages/devtools/react/src/context/DevModeContext.tsx +0 -226
- package/packages/devtools/react/src/context/PerformanceContext.tsx +0 -143
- package/packages/devtools/react/src/data/designs.ts +0 -13
- package/packages/devtools/react/src/hooks/useGitHubLabels.ts +0 -47
- package/packages/devtools/react/src/hooks/useVirtualList.ts +0 -124
- package/packages/devtools/react/src/index.ts +0 -77
- package/packages/devtools/react/src/panels/ConvexSpy.tsx +0 -130
- package/packages/devtools/react/src/panels/DatabaseSeeder.tsx +0 -116
- package/packages/devtools/react/src/panels/DevModePhase2.tsx +0 -191
- package/packages/devtools/react/src/panels/DevModePhase3.tsx +0 -234
- package/packages/devtools/react/src/panels/FeatureFlagsToggle.tsx +0 -104
- package/packages/devtools/react/src/panels/QuickRouteJump.tsx +0 -152
- package/packages/devtools/react/src/services/github-service.ts +0 -247
- package/packages/devtools/react/tsconfig.json +0 -31
- package/packages/devtools/react/tsup.config.ts +0 -18
- package/packages/devtools/solidjs/package.json +0 -49
- package/packages/devtools/solidjs/src/components/DesignPreview.tsx +0 -51
- package/packages/devtools/solidjs/src/components/DesignSwitcherDropdown.tsx +0 -95
- package/packages/devtools/solidjs/src/components/DevSidebar.tsx +0 -247
- package/packages/devtools/solidjs/src/components/DevToolbar.tsx +0 -242
- package/packages/devtools/solidjs/src/components/GitHubIssueDialog.tsx +0 -400
- package/packages/devtools/solidjs/src/components/InspectorOverlay.tsx +0 -311
- package/packages/devtools/solidjs/src/components/PageLoadWaterfall.tsx +0 -144
- package/packages/devtools/solidjs/src/components/PerformancePanel.tsx +0 -330
- package/packages/devtools/solidjs/src/context/DevModeContext.tsx +0 -216
- package/packages/devtools/solidjs/src/context/PerformanceContext.tsx +0 -135
- package/packages/devtools/solidjs/src/data/designs.ts +0 -13
- package/packages/devtools/solidjs/src/hooks/createGitHubLabels.ts +0 -47
- package/packages/devtools/solidjs/src/index.ts +0 -64
- package/packages/devtools/solidjs/src/services/github-service.ts +0 -247
- package/packages/devtools/solidjs/tsconfig.json +0 -21
- package/packages/devtools/src/index.ts +0 -377
- package/packages/devtools/tsup.config.ts +0 -12
- package/packages/env/package.json +0 -30
- package/packages/env/src/index.ts +0 -264
- package/packages/env/tsup.config.ts +0 -12
- package/packages/errors/package.json +0 -27
- package/packages/errors/react/package.json +0 -72
- package/packages/errors/react/src/analytics.ts +0 -16
- package/packages/errors/react/src/components/ErrorBoundary.tsx +0 -248
- package/packages/errors/react/src/components/ErrorDisplay.tsx +0 -328
- package/packages/errors/react/src/components/ValidationErrors.tsx +0 -102
- package/packages/errors/react/src/config.ts +0 -199
- package/packages/errors/react/src/constants.ts +0 -74
- package/packages/errors/react/src/hooks/useErrorBoundary.ts +0 -92
- package/packages/errors/react/src/hooks/useErrorHandler.ts +0 -87
- package/packages/errors/react/src/index.ts +0 -96
- package/packages/errors/react/src/types.ts +0 -102
- package/packages/errors/react/src/utils/errorMessages.ts +0 -35
- package/packages/errors/react/src/utils/errorPolicy.ts +0 -139
- package/packages/errors/react/src/utils/extractAppError.ts +0 -174
- package/packages/errors/react/src/utils/formatError.ts +0 -112
- package/packages/errors/react/tsconfig.json +0 -25
- package/packages/errors/react/tsup.config.ts +0 -24
- package/packages/errors/solidjs/package.json +0 -46
- package/packages/errors/solidjs/src/components/ErrorDisplay.tsx +0 -179
- package/packages/errors/solidjs/src/config.ts +0 -98
- package/packages/errors/solidjs/src/hooks/createErrorHandler.ts +0 -107
- package/packages/errors/solidjs/src/index.ts +0 -61
- package/packages/errors/solidjs/src/types.ts +0 -34
- package/packages/errors/solidjs/src/utils/errorPolicy.ts +0 -56
- package/packages/errors/solidjs/src/utils/extractAppError.ts +0 -94
- package/packages/errors/solidjs/src/utils/formatError.ts +0 -33
- package/packages/errors/solidjs/tsconfig.json +0 -26
- package/packages/errors/solidjs/tsup.config.ts +0 -21
- package/packages/errors/src/index.ts +0 -320
- package/packages/errors/tsup.config.ts +0 -12
- package/packages/logger/package.json +0 -27
- package/packages/logger/react/package.json +0 -46
- package/packages/logger/react/src/index.ts +0 -4
- package/packages/logger/react/src/useMetrics.ts +0 -42
- package/packages/logger/react/src/usePerformanceLog.ts +0 -61
- package/packages/logger/react/tsconfig.json +0 -31
- package/packages/logger/react/tsup.config.ts +0 -12
- package/packages/logger/solidjs/package.json +0 -45
- package/packages/logger/solidjs/src/createMetrics.ts +0 -37
- package/packages/logger/solidjs/src/createPerformanceLog.ts +0 -58
- package/packages/logger/solidjs/src/index.ts +0 -4
- package/packages/logger/solidjs/tsconfig.json +0 -32
- package/packages/logger/solidjs/tsup.config.ts +0 -12
- package/packages/logger/src/index.ts +0 -363
- package/packages/logger/tsup.config.ts +0 -12
- package/packages/perf/package.json +0 -27
- package/packages/perf/react/package.json +0 -59
- package/packages/perf/react/src/components/PerformanceDashboard.tsx +0 -257
- package/packages/perf/react/src/hooks/useMonitoredQuery.ts +0 -89
- package/packages/perf/react/src/hooks/usePerformanceMetrics.ts +0 -78
- package/packages/perf/react/src/index.ts +0 -33
- package/packages/perf/react/src/services/PerformanceMonitor.ts +0 -313
- package/packages/perf/react/src/types.ts +0 -77
- package/packages/perf/react/tsconfig.json +0 -25
- package/packages/perf/react/tsup.config.ts +0 -19
- package/packages/perf/solidjs/package.json +0 -41
- package/packages/perf/solidjs/src/components/PerformanceDashboard.tsx +0 -207
- package/packages/perf/solidjs/src/hooks/createPerformanceMetrics.ts +0 -73
- package/packages/perf/solidjs/src/index.ts +0 -31
- package/packages/perf/solidjs/src/services/PerformanceMonitor.ts +0 -134
- package/packages/perf/solidjs/src/types.ts +0 -78
- package/packages/perf/solidjs/tsconfig.json +0 -26
- package/packages/perf/solidjs/tsup.config.ts +0 -14
- package/packages/perf/src/index.ts +0 -410
- package/packages/perf/tsup.config.ts +0 -12
- package/pnpm-workspace.yaml +0 -2
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@geenius/tools",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.3.0",
|
|
5
5
|
"description": "Geenius Tools — Reusable dev tools for React, Solid, and Convex",
|
|
6
6
|
"author": "Antigravity HQ",
|
|
7
7
|
"license": "MIT",
|
|
@@ -19,12 +19,32 @@
|
|
|
19
19
|
"solidjs",
|
|
20
20
|
"geenius"
|
|
21
21
|
],
|
|
22
|
+
"files": [
|
|
23
|
+
"packages/env/dist",
|
|
24
|
+
"packages/errors/dist",
|
|
25
|
+
"packages/errors/react/dist",
|
|
26
|
+
"packages/errors/solidjs/dist",
|
|
27
|
+
"packages/logger/dist",
|
|
28
|
+
"packages/logger/react/dist",
|
|
29
|
+
"packages/logger/solidjs/dist",
|
|
30
|
+
"packages/perf/dist",
|
|
31
|
+
"packages/perf/react/dist",
|
|
32
|
+
"packages/perf/solidjs/dist",
|
|
33
|
+
"packages/devtools/dist",
|
|
34
|
+
"packages/devtools/react/dist",
|
|
35
|
+
"packages/devtools/solidjs/dist",
|
|
36
|
+
"packages/shared/dist",
|
|
37
|
+
"packages/convex/shared/dist",
|
|
38
|
+
"README.md",
|
|
39
|
+
"LICENSE",
|
|
40
|
+
"CHANGELOG.md"
|
|
41
|
+
],
|
|
22
42
|
"scripts": {
|
|
23
43
|
"dev": "pnpm -r --parallel type-check",
|
|
24
|
-
"build": "pnpm -r build",
|
|
44
|
+
"build": "pnpm -r --no-bail build",
|
|
25
45
|
"clean": "pnpm -r clean",
|
|
26
46
|
"lint": "pnpm -r --parallel type-check",
|
|
27
|
-
"test": "
|
|
47
|
+
"test": "pnpm -r test",
|
|
28
48
|
"type-check": "pnpm -r type-check",
|
|
29
49
|
"format": "prettier --write \"packages/*/src/**/*.{ts,tsx}\"",
|
|
30
50
|
"version:patch": "pnpm -r exec -- npm version patch --no-git-tag-version && npm version patch -m 'v%s'",
|
|
@@ -32,9 +52,12 @@
|
|
|
32
52
|
"version:major": "pnpm -r exec -- npm version major --no-git-tag-version && npm version major -m 'v%s'",
|
|
33
53
|
"release": "git push && git push --tags",
|
|
34
54
|
"publish:all": "pnpm -r publish --access public",
|
|
55
|
+
"publish:root": "npm publish --access public",
|
|
56
|
+
"prepublishOnly": "pnpm build",
|
|
35
57
|
"stop": "pkill -f 'vite.*geenius-tools' || true"
|
|
36
58
|
},
|
|
37
59
|
"devDependencies": {
|
|
60
|
+
"@types/node": "^22.0.0",
|
|
38
61
|
"prettier": "^3.8.1"
|
|
39
62
|
},
|
|
40
63
|
"engines": {
|
|
@@ -68,6 +91,42 @@
|
|
|
68
91
|
"./convex": {
|
|
69
92
|
"types": "./packages/convex/shared/dist/index.d.ts",
|
|
70
93
|
"import": "./packages/convex/shared/dist/index.js"
|
|
94
|
+
},
|
|
95
|
+
"./shared": {
|
|
96
|
+
"types": "./packages/shared/dist/index.d.ts",
|
|
97
|
+
"import": "./packages/shared/dist/index.js"
|
|
98
|
+
},
|
|
99
|
+
"./errors-react": {
|
|
100
|
+
"types": "./packages/errors/react/dist/index.d.ts",
|
|
101
|
+
"import": "./packages/errors/react/dist/index.js"
|
|
102
|
+
},
|
|
103
|
+
"./errors-solid": {
|
|
104
|
+
"types": "./packages/errors/solidjs/dist/index.d.ts",
|
|
105
|
+
"import": "./packages/errors/solidjs/dist/index.js"
|
|
106
|
+
},
|
|
107
|
+
"./devtools/react": {
|
|
108
|
+
"types": "./packages/devtools/react/dist/index.d.ts",
|
|
109
|
+
"import": "./packages/devtools/react/dist/index.js"
|
|
110
|
+
},
|
|
111
|
+
"./devtools/solidjs": {
|
|
112
|
+
"types": "./packages/devtools/solidjs/dist/index.d.ts",
|
|
113
|
+
"import": "./packages/devtools/solidjs/dist/index.js"
|
|
114
|
+
},
|
|
115
|
+
"./logger/react": {
|
|
116
|
+
"types": "./packages/logger/react/dist/index.d.ts",
|
|
117
|
+
"import": "./packages/logger/react/dist/index.js"
|
|
118
|
+
},
|
|
119
|
+
"./logger/solidjs": {
|
|
120
|
+
"types": "./packages/logger/solidjs/dist/index.d.ts",
|
|
121
|
+
"import": "./packages/logger/solidjs/dist/index.js"
|
|
122
|
+
},
|
|
123
|
+
"./perf/react": {
|
|
124
|
+
"types": "./packages/perf/react/dist/index.d.ts",
|
|
125
|
+
"import": "./packages/perf/react/dist/index.js"
|
|
126
|
+
},
|
|
127
|
+
"./perf/solidjs": {
|
|
128
|
+
"types": "./packages/perf/solidjs/dist/index.d.ts",
|
|
129
|
+
"import": "./packages/perf/solidjs/dist/index.js"
|
|
71
130
|
}
|
|
72
131
|
},
|
|
73
132
|
"main": "./packages/env/dist/index.js",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
# ✦ @geenius-
|
|
1
|
+
# ✦ @geenius/tools-convex\n\n> Typed error system for Convex applications\n\n---\n\n## Overview\nBuilt with Steve Jobs-level minimalism and Jony Ive-level craftsmanship, this package is designed to deliver unparalleled developer experience (DX) and rock-solid performance.\n\n## Installation\n\n```bash\npnpm add @geenius/tools-convex\n```\n\n## Usage\n\n```typescript\nimport { init } from '@geenius/tools-convex';\n\n// Initialize the module with absolute precision\ninit({\n mode: 'premium',\n});\n```\n\n## Architecture\n- **Zero-config**: It just works.\n- **Strictly Typed**: Fully written in TypeScript for flawless IntelliSense.\n- **Framework Agnostic**: seamlessly integrates into the Geenius ecosystem.\n\n---\n\n*Designed by Antigravity HQ*\n
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @geenius/tools-devtools — Development tools and utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for development, debugging, and development-time configuration.
|
|
5
|
+
* Includes feature flags, mock data, and debugging helpers.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Feature flag configuration
|
|
9
|
+
*/
|
|
10
|
+
interface FeatureFlag {
|
|
11
|
+
/** Flag name */
|
|
12
|
+
name: string;
|
|
13
|
+
/** Whether flag is enabled */
|
|
14
|
+
enabled: boolean;
|
|
15
|
+
/** When flag was created */
|
|
16
|
+
createdAt?: Date;
|
|
17
|
+
/** When flag will be removed */
|
|
18
|
+
expiresAt?: Date;
|
|
19
|
+
/** Optional description */
|
|
20
|
+
description?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Feature flags manager
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* const flags = new FeatureFlagManager()
|
|
28
|
+
* flags.set('newUI', true)
|
|
29
|
+
* if (flags.isEnabled('newUI')) {
|
|
30
|
+
* // Use new UI
|
|
31
|
+
* }
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
declare class FeatureFlagManager {
|
|
35
|
+
private flags;
|
|
36
|
+
private listeners;
|
|
37
|
+
/**
|
|
38
|
+
* Sets a feature flag
|
|
39
|
+
*/
|
|
40
|
+
set(name: string, enabled: boolean, description?: string): void;
|
|
41
|
+
/**
|
|
42
|
+
* Checks if feature is enabled
|
|
43
|
+
*/
|
|
44
|
+
isEnabled(name: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Gets flag info
|
|
47
|
+
*/
|
|
48
|
+
getFlag(name: string): FeatureFlag | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* Gets all flags
|
|
51
|
+
*/
|
|
52
|
+
getAllFlags(): FeatureFlag[];
|
|
53
|
+
/**
|
|
54
|
+
* Removes a flag
|
|
55
|
+
*/
|
|
56
|
+
remove(name: string): void;
|
|
57
|
+
/**
|
|
58
|
+
* Clears all flags
|
|
59
|
+
*/
|
|
60
|
+
clear(): void;
|
|
61
|
+
/**
|
|
62
|
+
* Listens for flag changes
|
|
63
|
+
*/
|
|
64
|
+
onChange(callback: (name: string, enabled: boolean) => void): () => void;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Type-safe feature flag helper
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```ts
|
|
71
|
+
* type AppFlags = 'newUI' | 'betaFeatures' | 'darkMode'
|
|
72
|
+
* const flags = createTypedFlags<AppFlags>()
|
|
73
|
+
* flags.set('newUI', true)
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
declare function createTypedFlags<T extends string = string>(): {
|
|
77
|
+
set: (name: T, enabled: boolean) => void;
|
|
78
|
+
isEnabled: (name: T) => boolean;
|
|
79
|
+
getFlag: (name: T) => FeatureFlag | undefined;
|
|
80
|
+
getAllFlags: () => FeatureFlag[];
|
|
81
|
+
remove: (name: T) => void;
|
|
82
|
+
clear: () => void;
|
|
83
|
+
onChange: (callback: (name: T, enabled: boolean) => void) => () => void;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Development mode detector
|
|
87
|
+
*
|
|
88
|
+
* @returns True if running in development
|
|
89
|
+
*/
|
|
90
|
+
declare function isDevelopment(): boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Production mode detector
|
|
93
|
+
*
|
|
94
|
+
* @returns True if running in production
|
|
95
|
+
*/
|
|
96
|
+
declare function isProduction(): boolean;
|
|
97
|
+
/**
|
|
98
|
+
* Debug helper for logging in dev mode only
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```ts
|
|
102
|
+
* devLog('user state:', user)
|
|
103
|
+
* ```
|
|
104
|
+
*/
|
|
105
|
+
declare function devLog(...args: any[]): void;
|
|
106
|
+
/**
|
|
107
|
+
* Debug warning in dev mode only
|
|
108
|
+
*/
|
|
109
|
+
declare function devWarn(...args: any[]): void;
|
|
110
|
+
/**
|
|
111
|
+
* Assertion utility for development
|
|
112
|
+
*
|
|
113
|
+
* @throws Error if condition is false in development
|
|
114
|
+
*/
|
|
115
|
+
declare function devAssert(condition: boolean, message: string): void;
|
|
116
|
+
/**
|
|
117
|
+
* Creates a mock data generator
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```ts
|
|
121
|
+
* const mockUsers = generateMocks(10, () => ({
|
|
122
|
+
* id: faker.string.uuid(),
|
|
123
|
+
* name: faker.person.fullName(),
|
|
124
|
+
* email: faker.internet.email()
|
|
125
|
+
* }))
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
declare function generateMocks<T>(count: number, generator: () => T): T[];
|
|
129
|
+
/**
|
|
130
|
+
* Measures React component render time
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```ts
|
|
134
|
+
* function MyComponent() {
|
|
135
|
+
* devMeasureRender('MyComponent')
|
|
136
|
+
* return <div>...</div>
|
|
137
|
+
* }
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
declare function devMeasureRender(componentName: string): (() => void) | undefined;
|
|
141
|
+
/**
|
|
142
|
+
* Deep object comparison for development assertions
|
|
143
|
+
*
|
|
144
|
+
* @returns True if objects are deeply equal
|
|
145
|
+
*/
|
|
146
|
+
declare function deepEqual(a: unknown, b: unknown): boolean;
|
|
147
|
+
/**
|
|
148
|
+
* Creates a performance monitor that logs slow operations
|
|
149
|
+
*
|
|
150
|
+
* @example
|
|
151
|
+
* ```ts
|
|
152
|
+
* const monitor = createSlowOpMonitor(100) // log if > 100ms
|
|
153
|
+
* await monitor.track('api-call', async () => {
|
|
154
|
+
* return fetch('/api/data')
|
|
155
|
+
* })
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
158
|
+
declare function createSlowOpMonitor(thresholdMs: number): {
|
|
159
|
+
track: <T>(name: string, fn: () => Promise<T>) => Promise<T>;
|
|
160
|
+
};
|
|
161
|
+
/**
|
|
162
|
+
* Type assertion helper
|
|
163
|
+
*
|
|
164
|
+
* @throws Error if value is undefined/null in development
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* ```ts
|
|
168
|
+
* const user = devAssertExists(data.user, 'user')
|
|
169
|
+
* ```
|
|
170
|
+
*/
|
|
171
|
+
declare function devAssertExists<T>(value: T | null | undefined, name: string): T;
|
|
172
|
+
/**
|
|
173
|
+
* Global devtools window object
|
|
174
|
+
*/
|
|
175
|
+
interface DevtoolsWindow {
|
|
176
|
+
__GEENIUS_DEVTOOLS__?: {
|
|
177
|
+
flags: FeatureFlagManager;
|
|
178
|
+
isDevelopment: () => boolean;
|
|
179
|
+
devLog: (...args: any[]) => void;
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Initializes global devtools object (browser only)
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* ```ts
|
|
187
|
+
* initGlobalDevtools()
|
|
188
|
+
* window.__GEENIUS_DEVTOOLS__.devLog('debug info')
|
|
189
|
+
* ```
|
|
190
|
+
*/
|
|
191
|
+
declare function initGlobalDevtools(): void;
|
|
192
|
+
/**
|
|
193
|
+
* Initializes devtools from environment
|
|
194
|
+
* Useful for loading feature flags from build-time environment variables
|
|
195
|
+
*
|
|
196
|
+
* @example
|
|
197
|
+
* ```ts
|
|
198
|
+
* const flags = createTypedFlags<'newUI' | 'beta'>()
|
|
199
|
+
* initDevtoolsFromEnv(flags, ['FEATURE_NEW_UI', 'FEATURE_BETA'])
|
|
200
|
+
* ```
|
|
201
|
+
*/
|
|
202
|
+
declare function initDevtoolsFromEnv<T extends string>(flags: ReturnType<typeof createTypedFlags<T>>, envKeys: string[]): void;
|
|
203
|
+
|
|
204
|
+
export { type DevtoolsWindow, type FeatureFlag, FeatureFlagManager, createSlowOpMonitor, createTypedFlags, deepEqual, devAssert, devAssertExists, devLog, devMeasureRender, devWarn, generateMocks, initDevtoolsFromEnv, initGlobalDevtools, isDevelopment, isProduction };
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
// src/index.ts
|
|
2
|
+
var FeatureFlagManager = class {
|
|
3
|
+
flags = /* @__PURE__ */ new Map();
|
|
4
|
+
listeners = /* @__PURE__ */ new Set();
|
|
5
|
+
/**
|
|
6
|
+
* Sets a feature flag
|
|
7
|
+
*/
|
|
8
|
+
set(name, enabled, description) {
|
|
9
|
+
this.flags.set(name, {
|
|
10
|
+
name,
|
|
11
|
+
enabled,
|
|
12
|
+
description,
|
|
13
|
+
createdAt: /* @__PURE__ */ new Date()
|
|
14
|
+
});
|
|
15
|
+
for (const listener of this.listeners) {
|
|
16
|
+
listener(name, enabled);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Checks if feature is enabled
|
|
21
|
+
*/
|
|
22
|
+
isEnabled(name) {
|
|
23
|
+
return this.flags.get(name)?.enabled ?? false;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Gets flag info
|
|
27
|
+
*/
|
|
28
|
+
getFlag(name) {
|
|
29
|
+
return this.flags.get(name);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Gets all flags
|
|
33
|
+
*/
|
|
34
|
+
getAllFlags() {
|
|
35
|
+
return Array.from(this.flags.values());
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Removes a flag
|
|
39
|
+
*/
|
|
40
|
+
remove(name) {
|
|
41
|
+
this.flags.delete(name);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Clears all flags
|
|
45
|
+
*/
|
|
46
|
+
clear() {
|
|
47
|
+
this.flags.clear();
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Listens for flag changes
|
|
51
|
+
*/
|
|
52
|
+
onChange(callback) {
|
|
53
|
+
this.listeners.add(callback);
|
|
54
|
+
return () => this.listeners.delete(callback);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
function createTypedFlags() {
|
|
58
|
+
const manager = new FeatureFlagManager();
|
|
59
|
+
return {
|
|
60
|
+
set: (name, enabled) => manager.set(name, enabled),
|
|
61
|
+
isEnabled: (name) => manager.isEnabled(name),
|
|
62
|
+
getFlag: (name) => manager.getFlag(name),
|
|
63
|
+
getAllFlags: () => manager.getAllFlags(),
|
|
64
|
+
remove: (name) => manager.remove(name),
|
|
65
|
+
clear: () => manager.clear(),
|
|
66
|
+
onChange: (callback) => manager.onChange(callback)
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
function isDevelopment() {
|
|
70
|
+
if (typeof process !== "undefined" && process.env) {
|
|
71
|
+
return process.env.NODE_ENV === "development" || process.env.DEBUG === "true" || false;
|
|
72
|
+
}
|
|
73
|
+
if (typeof window !== "undefined") {
|
|
74
|
+
return window.location.hostname === "localhost" || window.location.hostname === "127.0.0.1";
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
function isProduction() {
|
|
79
|
+
if (typeof process !== "undefined" && process.env) {
|
|
80
|
+
return process.env.NODE_ENV === "production";
|
|
81
|
+
}
|
|
82
|
+
return !isDevelopment();
|
|
83
|
+
}
|
|
84
|
+
function devLog(...args) {
|
|
85
|
+
if (isDevelopment()) {
|
|
86
|
+
console.log("[DEV]", ...args);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function devWarn(...args) {
|
|
90
|
+
if (isDevelopment()) {
|
|
91
|
+
console.warn("[DEV WARN]", ...args);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
function devAssert(condition, message) {
|
|
95
|
+
if (isDevelopment() && !condition) {
|
|
96
|
+
throw new Error(`[DEV ASSERTION] ${message}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function generateMocks(count, generator) {
|
|
100
|
+
return Array.from({ length: count }, () => generator());
|
|
101
|
+
}
|
|
102
|
+
function devMeasureRender(componentName) {
|
|
103
|
+
if (!isDevelopment()) return;
|
|
104
|
+
const start = performance.now();
|
|
105
|
+
return () => {
|
|
106
|
+
const duration = performance.now() - start;
|
|
107
|
+
if (duration > 16) {
|
|
108
|
+
console.warn(
|
|
109
|
+
`[PERF] ${componentName} render took ${duration.toFixed(2)}ms`
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
function deepEqual(a, b) {
|
|
115
|
+
if (a === b) return true;
|
|
116
|
+
if (typeof a !== "object" || typeof b !== "object" || a === null || b === null) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
const keysA = Object.keys(a);
|
|
120
|
+
const keysB = Object.keys(b);
|
|
121
|
+
if (keysA.length !== keysB.length) return false;
|
|
122
|
+
for (const key of keysA) {
|
|
123
|
+
if (!deepEqual(a[key], b[key])) {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
function createSlowOpMonitor(thresholdMs) {
|
|
130
|
+
return {
|
|
131
|
+
track: async (name, fn) => {
|
|
132
|
+
const start = performance.now();
|
|
133
|
+
const result = await fn();
|
|
134
|
+
const duration = performance.now() - start;
|
|
135
|
+
if (duration > thresholdMs) {
|
|
136
|
+
console.warn(
|
|
137
|
+
`[SLOW OP] ${name} took ${duration.toFixed(2)}ms (threshold: ${thresholdMs}ms)`
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
return result;
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
function devAssertExists(value, name) {
|
|
145
|
+
if (isDevelopment() && (value === null || value === void 0)) {
|
|
146
|
+
throw new Error(`Expected ${name} to exist, got ${value}`);
|
|
147
|
+
}
|
|
148
|
+
return value;
|
|
149
|
+
}
|
|
150
|
+
function initGlobalDevtools() {
|
|
151
|
+
if (typeof window === "undefined") return;
|
|
152
|
+
const flags = new FeatureFlagManager();
|
|
153
|
+
window.__GEENIUS_DEVTOOLS__ = {
|
|
154
|
+
flags,
|
|
155
|
+
isDevelopment,
|
|
156
|
+
devLog,
|
|
157
|
+
devWarn,
|
|
158
|
+
devAssert
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
function initDevtoolsFromEnv(flags, envKeys) {
|
|
162
|
+
for (const key of envKeys) {
|
|
163
|
+
const enabled = typeof process !== "undefined" && process.env[key] === "true";
|
|
164
|
+
if (enabled) {
|
|
165
|
+
const flagName = key.replace(/^FEATURE_/, "").toLowerCase();
|
|
166
|
+
flags.set(flagName, true);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
export {
|
|
171
|
+
FeatureFlagManager,
|
|
172
|
+
createSlowOpMonitor,
|
|
173
|
+
createTypedFlags,
|
|
174
|
+
deepEqual,
|
|
175
|
+
devAssert,
|
|
176
|
+
devAssertExists,
|
|
177
|
+
devLog,
|
|
178
|
+
devMeasureRender,
|
|
179
|
+
devWarn,
|
|
180
|
+
generateMocks,
|
|
181
|
+
initDevtoolsFromEnv,
|
|
182
|
+
initGlobalDevtools,
|
|
183
|
+
isDevelopment,
|
|
184
|
+
isProduction
|
|
185
|
+
};
|
|
186
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @geenius/tools-devtools — Development tools and utilities\n *\n * Provides utilities for development, debugging, and development-time configuration.\n * Includes feature flags, mock data, and debugging helpers.\n */\n\n/**\n * Feature flag configuration\n */\nexport interface FeatureFlag {\n /** Flag name */\n name: string\n /** Whether flag is enabled */\n enabled: boolean\n /** When flag was created */\n createdAt?: Date\n /** When flag will be removed */\n expiresAt?: Date\n /** Optional description */\n description?: string\n}\n\n/**\n * Feature flags manager\n *\n * @example\n * ```ts\n * const flags = new FeatureFlagManager()\n * flags.set('newUI', true)\n * if (flags.isEnabled('newUI')) {\n * // Use new UI\n * }\n * ```\n */\nexport class FeatureFlagManager {\n private flags: Map<string, FeatureFlag> = new Map()\n private listeners: Set<(flag: string, enabled: boolean) => void> = new Set()\n\n /**\n * Sets a feature flag\n */\n set(name: string, enabled: boolean, description?: string) {\n this.flags.set(name, {\n name,\n enabled,\n description,\n createdAt: new Date(),\n })\n\n // Notify listeners\n for (const listener of this.listeners) {\n listener(name, enabled)\n }\n }\n\n /**\n * Checks if feature is enabled\n */\n isEnabled(name: string): boolean {\n return this.flags.get(name)?.enabled ?? false\n }\n\n /**\n * Gets flag info\n */\n getFlag(name: string): FeatureFlag | undefined {\n return this.flags.get(name)\n }\n\n /**\n * Gets all flags\n */\n getAllFlags(): FeatureFlag[] {\n return Array.from(this.flags.values())\n }\n\n /**\n * Removes a flag\n */\n remove(name: string) {\n this.flags.delete(name)\n }\n\n /**\n * Clears all flags\n */\n clear() {\n this.flags.clear()\n }\n\n /**\n * Listens for flag changes\n */\n onChange(callback: (name: string, enabled: boolean) => void): () => void {\n this.listeners.add(callback)\n return () => this.listeners.delete(callback)\n }\n}\n\n/**\n * Type-safe feature flag helper\n *\n * @example\n * ```ts\n * type AppFlags = 'newUI' | 'betaFeatures' | 'darkMode'\n * const flags = createTypedFlags<AppFlags>()\n * flags.set('newUI', true)\n * ```\n */\nexport function createTypedFlags<T extends string = string>() {\n const manager = new FeatureFlagManager()\n\n return {\n set: (name: T, enabled: boolean) => manager.set(name, enabled),\n isEnabled: (name: T) => manager.isEnabled(name),\n getFlag: (name: T) => manager.getFlag(name),\n getAllFlags: () => manager.getAllFlags(),\n remove: (name: T) => manager.remove(name),\n clear: () => manager.clear(),\n onChange: (callback: (name: T, enabled: boolean) => void) =>\n manager.onChange(callback as any),\n }\n}\n\n/**\n * Development mode detector\n *\n * @returns True if running in development\n */\nexport function isDevelopment(): boolean {\n if (typeof process !== 'undefined' && process.env) {\n return (\n process.env.NODE_ENV === 'development' ||\n process.env.DEBUG === 'true' ||\n false\n )\n }\n\n if (typeof window !== 'undefined') {\n return (\n window.location.hostname === 'localhost' ||\n window.location.hostname === '127.0.0.1'\n )\n }\n\n return false\n}\n\n/**\n * Production mode detector\n *\n * @returns True if running in production\n */\nexport function isProduction(): boolean {\n if (typeof process !== 'undefined' && process.env) {\n return process.env.NODE_ENV === 'production'\n }\n\n return !isDevelopment()\n}\n\n/**\n * Debug helper for logging in dev mode only\n *\n * @example\n * ```ts\n * devLog('user state:', user)\n * ```\n */\nexport function devLog(...args: any[]) {\n if (isDevelopment()) {\n console.log('[DEV]', ...args)\n }\n}\n\n/**\n * Debug warning in dev mode only\n */\nexport function devWarn(...args: any[]) {\n if (isDevelopment()) {\n console.warn('[DEV WARN]', ...args)\n }\n}\n\n/**\n * Assertion utility for development\n *\n * @throws Error if condition is false in development\n */\nexport function devAssert(condition: boolean, message: string) {\n if (isDevelopment() && !condition) {\n throw new Error(`[DEV ASSERTION] ${message}`)\n }\n}\n\n/**\n * Creates a mock data generator\n *\n * @example\n * ```ts\n * const mockUsers = generateMocks(10, () => ({\n * id: faker.string.uuid(),\n * name: faker.person.fullName(),\n * email: faker.internet.email()\n * }))\n * ```\n */\nexport function generateMocks<T>(count: number, generator: () => T): T[] {\n return Array.from({ length: count }, () => generator())\n}\n\n/**\n * Measures React component render time\n *\n * @example\n * ```ts\n * function MyComponent() {\n * devMeasureRender('MyComponent')\n * return <div>...</div>\n * }\n * ```\n */\nexport function devMeasureRender(componentName: string) {\n if (!isDevelopment()) return\n\n const start = performance.now()\n\n return () => {\n const duration = performance.now() - start\n if (duration > 16) {\n // Longer than 60fps frame\n console.warn(\n `[PERF] ${componentName} render took ${duration.toFixed(2)}ms`\n )\n }\n }\n}\n\n/**\n * Deep object comparison for development assertions\n *\n * @returns True if objects are deeply equal\n */\nexport function deepEqual(a: unknown, b: unknown): boolean {\n if (a === b) return true\n\n if (\n typeof a !== 'object' ||\n typeof b !== 'object' ||\n a === null ||\n b === null\n ) {\n return false\n }\n\n const keysA = Object.keys(a)\n const keysB = Object.keys(b)\n\n if (keysA.length !== keysB.length) return false\n\n for (const key of keysA) {\n if (!deepEqual((a as any)[key], (b as any)[key])) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * Creates a performance monitor that logs slow operations\n *\n * @example\n * ```ts\n * const monitor = createSlowOpMonitor(100) // log if > 100ms\n * await monitor.track('api-call', async () => {\n * return fetch('/api/data')\n * })\n * ```\n */\nexport function createSlowOpMonitor(thresholdMs: number) {\n return {\n track: async <T,>(name: string, fn: () => Promise<T>): Promise<T> => {\n const start = performance.now()\n const result = await fn()\n const duration = performance.now() - start\n\n if (duration > thresholdMs) {\n console.warn(\n `[SLOW OP] ${name} took ${duration.toFixed(2)}ms (threshold: ${thresholdMs}ms)`\n )\n }\n\n return result\n },\n }\n}\n\n/**\n * Type assertion helper\n *\n * @throws Error if value is undefined/null in development\n *\n * @example\n * ```ts\n * const user = devAssertExists(data.user, 'user')\n * ```\n */\nexport function devAssertExists<T>(value: T | null | undefined, name: string): T {\n if (isDevelopment() && (value === null || value === undefined)) {\n throw new Error(`Expected ${name} to exist, got ${value}`)\n }\n return value as T\n}\n\n/**\n * Global devtools window object\n */\nexport interface DevtoolsWindow {\n __GEENIUS_DEVTOOLS__?: {\n flags: FeatureFlagManager\n isDevelopment: () => boolean\n devLog: (...args: any[]) => void\n }\n}\n\n/**\n * Initializes global devtools object (browser only)\n *\n * @example\n * ```ts\n * initGlobalDevtools()\n * window.__GEENIUS_DEVTOOLS__.devLog('debug info')\n * ```\n */\nexport function initGlobalDevtools() {\n if (typeof window === 'undefined') return\n\n const flags = new FeatureFlagManager()\n\n ;(window as any).__GEENIUS_DEVTOOLS__ = {\n flags,\n isDevelopment,\n devLog,\n devWarn,\n devAssert,\n }\n}\n\n/**\n * Initializes devtools from environment\n * Useful for loading feature flags from build-time environment variables\n *\n * @example\n * ```ts\n * const flags = createTypedFlags<'newUI' | 'beta'>()\n * initDevtoolsFromEnv(flags, ['FEATURE_NEW_UI', 'FEATURE_BETA'])\n * ```\n */\nexport function initDevtoolsFromEnv<T extends string>(\n flags: ReturnType<typeof createTypedFlags<T>>,\n envKeys: string[]\n) {\n for (const key of envKeys) {\n const enabled =\n typeof process !== 'undefined' &&\n process.env[key] === 'true'\n\n if (enabled) {\n const flagName = key\n .replace(/^FEATURE_/, '')\n .toLowerCase() as T\n flags.set(flagName, true)\n }\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
# ✦ @geenius-
|
|
1
|
+
# ✦ @geenius/tools-devtools-react\n\n> React dev-tools UI — floating toolbar, performance panel, inspector, GitHub issues\n\n---\n\n## Overview\nBuilt with Steve Jobs-level minimalism and Jony Ive-level craftsmanship, this package is designed to deliver unparalleled developer experience (DX) and rock-solid performance.\n\n## Installation\n\n```bash\npnpm add @geenius/tools-devtools-react\n```\n\n## Usage\n\n```typescript\nimport { init } from '@geenius/tools-devtools-react';\n\n// Initialize the module with absolute precision\ninit({\n mode: 'premium',\n});\n```\n\n## Architecture\n- **Zero-config**: It just works.\n- **Strictly Typed**: Fully written in TypeScript for flawless IntelliSense.\n- **Framework Agnostic**: seamlessly integrates into the Geenius ecosystem.\n\n---\n\n*Designed by Antigravity HQ*\n
|
|
@@ -1 +1 @@
|
|
|
1
|
-
# ✦ @geenius-
|
|
1
|
+
# ✦ @geenius/tools-devtools-solidjs\n\n> SolidJS dev-tools UI — floating toolbar, performance panel, inspector, GitHub issues\n\n---\n\n## Overview\nBuilt with Steve Jobs-level minimalism and Jony Ive-level craftsmanship, this package is designed to deliver unparalleled developer experience (DX) and rock-solid performance.\n\n## Installation\n\n```bash\npnpm add @geenius/tools-devtools-solidjs\n```\n\n## Usage\n\n```typescript\nimport { init } from '@geenius/tools-devtools-solidjs';\n\n// Initialize the module with absolute precision\ninit({\n mode: 'premium',\n});\n```\n\n## Architecture\n- **Zero-config**: It just works.\n- **Strictly Typed**: Fully written in TypeScript for flawless IntelliSense.\n- **Framework Agnostic**: seamlessly integrates into the Geenius ecosystem.\n\n---\n\n*Designed by Antigravity HQ*\n
|