@stackwright-pro/scaffold-hooks 0.0.0-beta-20260417191149
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/dist/index.d.mts +31 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.js +132 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +96 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +40 -0
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @stackwright-pro/scaffold-hooks
|
|
3
|
+
*
|
|
4
|
+
* Auto-registers Pro packages during Stackwright project scaffolding.
|
|
5
|
+
* Uses @stackwright/hooks-registry singleton to survive module boundary crossings.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Register all Pro scaffold hooks with the shared registry.
|
|
9
|
+
*
|
|
10
|
+
* Uses @stackwright/hooks-registry's globalThis-based singleton so hooks
|
|
11
|
+
* survive module boundary crossings between Pro packages and the CLI.
|
|
12
|
+
*
|
|
13
|
+
* Call this BEFORE calling scaffold() to ensure hooks run in the correct context.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* import { registerProScaffoldHooks } from '@stackwright-pro/scaffold-hooks';
|
|
18
|
+
*
|
|
19
|
+
* // Register hooks (they go to the shared global registry)
|
|
20
|
+
* registerProScaffoldHooks();
|
|
21
|
+
*
|
|
22
|
+
* // Now when CLI calls scaffold(), it will see these hooks
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
declare function registerProScaffoldHooks(): void;
|
|
26
|
+
/**
|
|
27
|
+
* @deprecated Use registerProScaffoldHooks() instead. Kept for backward compatibility.
|
|
28
|
+
*/
|
|
29
|
+
declare const createProScaffoldHooks: typeof registerProScaffoldHooks;
|
|
30
|
+
|
|
31
|
+
export { createProScaffoldHooks, registerProScaffoldHooks };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @stackwright-pro/scaffold-hooks
|
|
3
|
+
*
|
|
4
|
+
* Auto-registers Pro packages during Stackwright project scaffolding.
|
|
5
|
+
* Uses @stackwright/hooks-registry singleton to survive module boundary crossings.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Register all Pro scaffold hooks with the shared registry.
|
|
9
|
+
*
|
|
10
|
+
* Uses @stackwright/hooks-registry's globalThis-based singleton so hooks
|
|
11
|
+
* survive module boundary crossings between Pro packages and the CLI.
|
|
12
|
+
*
|
|
13
|
+
* Call this BEFORE calling scaffold() to ensure hooks run in the correct context.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* import { registerProScaffoldHooks } from '@stackwright-pro/scaffold-hooks';
|
|
18
|
+
*
|
|
19
|
+
* // Register hooks (they go to the shared global registry)
|
|
20
|
+
* registerProScaffoldHooks();
|
|
21
|
+
*
|
|
22
|
+
* // Now when CLI calls scaffold(), it will see these hooks
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
declare function registerProScaffoldHooks(): void;
|
|
26
|
+
/**
|
|
27
|
+
* @deprecated Use registerProScaffoldHooks() instead. Kept for backward compatibility.
|
|
28
|
+
*/
|
|
29
|
+
declare const createProScaffoldHooks: typeof registerProScaffoldHooks;
|
|
30
|
+
|
|
31
|
+
export { createProScaffoldHooks, registerProScaffoldHooks };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/index.ts
|
|
31
|
+
var index_exports = {};
|
|
32
|
+
__export(index_exports, {
|
|
33
|
+
createProScaffoldHooks: () => createProScaffoldHooks,
|
|
34
|
+
registerProScaffoldHooks: () => registerProScaffoldHooks
|
|
35
|
+
});
|
|
36
|
+
module.exports = __toCommonJS(index_exports);
|
|
37
|
+
var import_chalk = __toESM(require("chalk"));
|
|
38
|
+
var import_hooks_registry = require("@stackwright/hooks-registry");
|
|
39
|
+
var STACKWRIGHT_NPM_VERSIONS = {
|
|
40
|
+
"@stackwright/core": "^0.7.0",
|
|
41
|
+
"@stackwright/icons": "^0.3.0",
|
|
42
|
+
"@stackwright/nextjs": "^0.3.1",
|
|
43
|
+
"@stackwright/ui-shadcn": "^0.1.0",
|
|
44
|
+
"@stackwright/build-scripts": "^0.4.0",
|
|
45
|
+
"@stackwright/mcp": "^0.2.0",
|
|
46
|
+
"@stackwright/otters": "^0.2.0"
|
|
47
|
+
};
|
|
48
|
+
var PRO_DEPENDENCIES = {
|
|
49
|
+
"@stackwright-pro/mcp": "latest",
|
|
50
|
+
"@stackwright-pro/otters": "latest",
|
|
51
|
+
"@stackwright-pro/openapi": "latest",
|
|
52
|
+
"@stackwright-pro/auth": "latest",
|
|
53
|
+
"@stackwright-pro/auth-nextjs": "latest",
|
|
54
|
+
zod: "^3.23.0"
|
|
55
|
+
};
|
|
56
|
+
var PRO_DEV_DEPENDENCIES = {
|
|
57
|
+
"@stoplight/prism-cli": "^5.14.2"
|
|
58
|
+
};
|
|
59
|
+
function registerProScaffoldHooks() {
|
|
60
|
+
(0, import_hooks_registry.registerScaffoldHook)({
|
|
61
|
+
type: "preInstall",
|
|
62
|
+
name: "pro-dependencies",
|
|
63
|
+
priority: 10,
|
|
64
|
+
critical: false,
|
|
65
|
+
handler: async (ctx) => {
|
|
66
|
+
const packageJson = ctx.packageJson;
|
|
67
|
+
const dependencies = packageJson.dependencies || {};
|
|
68
|
+
const devDependencies = packageJson.devDependencies || {};
|
|
69
|
+
const scripts = packageJson.scripts || {};
|
|
70
|
+
for (const [pkgName, version] of Object.entries(STACKWRIGHT_NPM_VERSIONS)) {
|
|
71
|
+
if (dependencies[pkgName] === "workspace:*") {
|
|
72
|
+
dependencies[pkgName] = version;
|
|
73
|
+
}
|
|
74
|
+
if (devDependencies[pkgName] === "workspace:*") {
|
|
75
|
+
devDependencies[pkgName] = version;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
dependencies["@stackwright/mcp"] = STACKWRIGHT_NPM_VERSIONS["@stackwright/mcp"];
|
|
79
|
+
dependencies["@stackwright-pro/mcp"] = "latest";
|
|
80
|
+
Object.assign(dependencies, PRO_DEPENDENCIES);
|
|
81
|
+
Object.assign(devDependencies, PRO_DEV_DEPENDENCIES);
|
|
82
|
+
Object.assign(scripts, {
|
|
83
|
+
"dev:admin": "MOCK_USER=admin next dev",
|
|
84
|
+
"dev:analyst": "MOCK_USER=analyst next dev",
|
|
85
|
+
"dev:viewer": "MOCK_USER=viewer next dev",
|
|
86
|
+
prebuild: "node scripts/prebuild.js",
|
|
87
|
+
predev: "node scripts/prebuild.js"
|
|
88
|
+
});
|
|
89
|
+
packageJson.dependencies = dependencies;
|
|
90
|
+
packageJson.devDependencies = devDependencies;
|
|
91
|
+
packageJson.scripts = scripts;
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
(0, import_hooks_registry.registerScaffoldHook)({
|
|
95
|
+
type: "preInstall",
|
|
96
|
+
name: "pro-mcp-config",
|
|
97
|
+
priority: 20,
|
|
98
|
+
critical: false,
|
|
99
|
+
handler: async (ctx) => {
|
|
100
|
+
const codePuppyConfig = ctx.codePuppyConfig || {};
|
|
101
|
+
codePuppyConfig.mcp_servers = codePuppyConfig.mcp_servers || {};
|
|
102
|
+
codePuppyConfig.mcp_servers["stackwright-pro"] = {
|
|
103
|
+
command: "node",
|
|
104
|
+
args: ["node_modules/@stackwright-pro/mcp/dist/server.js"],
|
|
105
|
+
env: { NODE_ENV: "development" }
|
|
106
|
+
};
|
|
107
|
+
codePuppyConfig.agents_path = [
|
|
108
|
+
"node_modules/@stackwright/otters",
|
|
109
|
+
"node_modules/@stackwright-pro/otters"
|
|
110
|
+
];
|
|
111
|
+
ctx.codePuppyConfig = codePuppyConfig;
|
|
112
|
+
console.log(import_chalk.default.green("\u2705 Pro MCP server configured"));
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
(0, import_hooks_registry.registerScaffoldHook)({
|
|
116
|
+
type: "postInstall",
|
|
117
|
+
name: "verify-pro-installation",
|
|
118
|
+
priority: 50,
|
|
119
|
+
critical: false,
|
|
120
|
+
handler: async () => {
|
|
121
|
+
console.log(import_chalk.default.cyan("\u{1F9A6}\u{1F9A6} Pro packages ready!"));
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
console.log(import_chalk.default.bold.cyan("\u{1F9A6}\u{1F517} @stackwright-pro/scaffold-hooks registered"));
|
|
125
|
+
}
|
|
126
|
+
var createProScaffoldHooks = registerProScaffoldHooks;
|
|
127
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
128
|
+
0 && (module.exports = {
|
|
129
|
+
createProScaffoldHooks,
|
|
130
|
+
registerProScaffoldHooks
|
|
131
|
+
});
|
|
132
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @stackwright-pro/scaffold-hooks\n *\n * Auto-registers Pro packages during Stackwright project scaffolding.\n * Uses @stackwright/hooks-registry singleton to survive module boundary crossings.\n */\n\nimport chalk from 'chalk';\nimport { registerScaffoldHook, type ScaffoldHookContext } from '@stackwright/hooks-registry';\n\n// Fixed npm versions for @stackwright/* packages\nconst STACKWRIGHT_NPM_VERSIONS: Record<string, string> = {\n '@stackwright/core': '^0.7.0',\n '@stackwright/icons': '^0.3.0',\n '@stackwright/nextjs': '^0.3.1',\n '@stackwright/ui-shadcn': '^0.1.0',\n '@stackwright/build-scripts': '^0.4.0',\n '@stackwright/mcp': '^0.2.0',\n '@stackwright/otters': '^0.2.0',\n};\n\nconst PRO_DEPENDENCIES: Record<string, string> = {\n '@stackwright-pro/mcp': 'latest',\n '@stackwright-pro/otters': 'latest',\n '@stackwright-pro/openapi': 'latest',\n '@stackwright-pro/auth': 'latest',\n '@stackwright-pro/auth-nextjs': 'latest',\n zod: '^3.23.0',\n};\n\nconst PRO_DEV_DEPENDENCIES: Record<string, string> = {\n '@stoplight/prism-cli': '^5.14.2',\n};\n\n/**\n * Register all Pro scaffold hooks with the shared registry.\n *\n * Uses @stackwright/hooks-registry's globalThis-based singleton so hooks\n * survive module boundary crossings between Pro packages and the CLI.\n *\n * Call this BEFORE calling scaffold() to ensure hooks run in the correct context.\n *\n * @example\n * ```typescript\n * import { registerProScaffoldHooks } from '@stackwright-pro/scaffold-hooks';\n *\n * // Register hooks (they go to the shared global registry)\n * registerProScaffoldHooks();\n *\n * // Now when CLI calls scaffold(), it will see these hooks\n * ```\n */\nexport function registerProScaffoldHooks(): void {\n registerScaffoldHook({\n type: 'preInstall',\n name: 'pro-dependencies',\n priority: 10,\n critical: false,\n handler: async (ctx: ScaffoldHookContext) => {\n const packageJson = ctx.packageJson as Record<string, unknown>;\n const dependencies = (packageJson.dependencies as Record<string, string>) || {};\n const devDependencies = (packageJson.devDependencies as Record<string, string>) || {};\n const scripts = (packageJson.scripts as Record<string, string>) || {};\n\n // Fix workspace:* references from scaffold\n for (const [pkgName, version] of Object.entries(STACKWRIGHT_NPM_VERSIONS)) {\n if (dependencies[pkgName] === 'workspace:*') {\n dependencies[pkgName] = version;\n }\n if (devDependencies[pkgName] === 'workspace:*') {\n devDependencies[pkgName] = version;\n }\n }\n\n // Add Pro MCP packages\n dependencies['@stackwright/mcp'] = STACKWRIGHT_NPM_VERSIONS['@stackwright/mcp']!;\n dependencies['@stackwright-pro/mcp'] = 'latest';\n\n // Add Pro dependencies\n Object.assign(dependencies, PRO_DEPENDENCIES);\n Object.assign(devDependencies, PRO_DEV_DEPENDENCIES);\n\n // Add role-based dev scripts\n Object.assign(scripts, {\n 'dev:admin': 'MOCK_USER=admin next dev',\n 'dev:analyst': 'MOCK_USER=analyst next dev',\n 'dev:viewer': 'MOCK_USER=viewer next dev',\n prebuild: 'node scripts/prebuild.js',\n predev: 'node scripts/prebuild.js',\n });\n\n packageJson.dependencies = dependencies;\n packageJson.devDependencies = devDependencies;\n packageJson.scripts = scripts;\n },\n });\n\n registerScaffoldHook({\n type: 'preInstall',\n name: 'pro-mcp-config',\n priority: 20,\n critical: false,\n handler: async (ctx) => {\n const codePuppyConfig = (ctx.codePuppyConfig || {}) as Record<string, unknown>;\n\n // Ensure structure exists\n codePuppyConfig.mcp_servers = codePuppyConfig.mcp_servers || {};\n\n // Add Pro MCP server\n (codePuppyConfig.mcp_servers as Record<string, unknown>)['stackwright-pro'] = {\n command: 'node',\n args: ['node_modules/@stackwright-pro/mcp/dist/server.js'],\n env: { NODE_ENV: 'development' },\n };\n\n // Set agents_path to include both OSS and Pro otters\n codePuppyConfig.agents_path = [\n 'node_modules/@stackwright/otters',\n 'node_modules/@stackwright-pro/otters',\n ];\n\n ctx.codePuppyConfig = codePuppyConfig;\n console.log(chalk.green('✅ Pro MCP server configured'));\n },\n });\n\n registerScaffoldHook({\n type: 'postInstall',\n name: 'verify-pro-installation',\n priority: 50,\n critical: false,\n handler: async () => {\n console.log(chalk.cyan('🦦🦦 Pro packages ready!'));\n },\n });\n\n console.log(chalk.bold.cyan('🦦🔗 @stackwright-pro/scaffold-hooks registered'));\n}\n\n/**\n * @deprecated Use registerProScaffoldHooks() instead. Kept for backward compatibility.\n */\nexport const createProScaffoldHooks = registerProScaffoldHooks;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,mBAAkB;AAClB,4BAA+D;AAG/D,IAAM,2BAAmD;AAAA,EACvD,qBAAqB;AAAA,EACrB,sBAAsB;AAAA,EACtB,uBAAuB;AAAA,EACvB,0BAA0B;AAAA,EAC1B,8BAA8B;AAAA,EAC9B,oBAAoB;AAAA,EACpB,uBAAuB;AACzB;AAEA,IAAM,mBAA2C;AAAA,EAC/C,wBAAwB;AAAA,EACxB,2BAA2B;AAAA,EAC3B,4BAA4B;AAAA,EAC5B,yBAAyB;AAAA,EACzB,gCAAgC;AAAA,EAChC,KAAK;AACP;AAEA,IAAM,uBAA+C;AAAA,EACnD,wBAAwB;AAC1B;AAoBO,SAAS,2BAAiC;AAC/C,kDAAqB;AAAA,IACnB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,UAAU;AAAA,IACV,SAAS,OAAO,QAA6B;AAC3C,YAAM,cAAc,IAAI;AACxB,YAAM,eAAgB,YAAY,gBAA2C,CAAC;AAC9E,YAAM,kBAAmB,YAAY,mBAA8C,CAAC;AACpF,YAAM,UAAW,YAAY,WAAsC,CAAC;AAGpE,iBAAW,CAAC,SAAS,OAAO,KAAK,OAAO,QAAQ,wBAAwB,GAAG;AACzE,YAAI,aAAa,OAAO,MAAM,eAAe;AAC3C,uBAAa,OAAO,IAAI;AAAA,QAC1B;AACA,YAAI,gBAAgB,OAAO,MAAM,eAAe;AAC9C,0BAAgB,OAAO,IAAI;AAAA,QAC7B;AAAA,MACF;AAGA,mBAAa,kBAAkB,IAAI,yBAAyB,kBAAkB;AAC9E,mBAAa,sBAAsB,IAAI;AAGvC,aAAO,OAAO,cAAc,gBAAgB;AAC5C,aAAO,OAAO,iBAAiB,oBAAoB;AAGnD,aAAO,OAAO,SAAS;AAAA,QACrB,aAAa;AAAA,QACb,eAAe;AAAA,QACf,cAAc;AAAA,QACd,UAAU;AAAA,QACV,QAAQ;AAAA,MACV,CAAC;AAED,kBAAY,eAAe;AAC3B,kBAAY,kBAAkB;AAC9B,kBAAY,UAAU;AAAA,IACxB;AAAA,EACF,CAAC;AAED,kDAAqB;AAAA,IACnB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,UAAU;AAAA,IACV,SAAS,OAAO,QAAQ;AACtB,YAAM,kBAAmB,IAAI,mBAAmB,CAAC;AAGjD,sBAAgB,cAAc,gBAAgB,eAAe,CAAC;AAG9D,MAAC,gBAAgB,YAAwC,iBAAiB,IAAI;AAAA,QAC5E,SAAS;AAAA,QACT,MAAM,CAAC,kDAAkD;AAAA,QACzD,KAAK,EAAE,UAAU,cAAc;AAAA,MACjC;AAGA,sBAAgB,cAAc;AAAA,QAC5B;AAAA,QACA;AAAA,MACF;AAEA,UAAI,kBAAkB;AACtB,cAAQ,IAAI,aAAAA,QAAM,MAAM,kCAA6B,CAAC;AAAA,IACxD;AAAA,EACF,CAAC;AAED,kDAAqB;AAAA,IACnB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,UAAU;AAAA,IACV,SAAS,YAAY;AACnB,cAAQ,IAAI,aAAAA,QAAM,KAAK,wCAA0B,CAAC;AAAA,IACpD;AAAA,EACF,CAAC;AAED,UAAQ,IAAI,aAAAA,QAAM,KAAK,KAAK,+DAAiD,CAAC;AAChF;AAKO,IAAM,yBAAyB;","names":["chalk"]}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
// src/index.ts
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import { registerScaffoldHook } from "@stackwright/hooks-registry";
|
|
4
|
+
var STACKWRIGHT_NPM_VERSIONS = {
|
|
5
|
+
"@stackwright/core": "^0.7.0",
|
|
6
|
+
"@stackwright/icons": "^0.3.0",
|
|
7
|
+
"@stackwright/nextjs": "^0.3.1",
|
|
8
|
+
"@stackwright/ui-shadcn": "^0.1.0",
|
|
9
|
+
"@stackwright/build-scripts": "^0.4.0",
|
|
10
|
+
"@stackwright/mcp": "^0.2.0",
|
|
11
|
+
"@stackwright/otters": "^0.2.0"
|
|
12
|
+
};
|
|
13
|
+
var PRO_DEPENDENCIES = {
|
|
14
|
+
"@stackwright-pro/mcp": "latest",
|
|
15
|
+
"@stackwright-pro/otters": "latest",
|
|
16
|
+
"@stackwright-pro/openapi": "latest",
|
|
17
|
+
"@stackwright-pro/auth": "latest",
|
|
18
|
+
"@stackwright-pro/auth-nextjs": "latest",
|
|
19
|
+
zod: "^3.23.0"
|
|
20
|
+
};
|
|
21
|
+
var PRO_DEV_DEPENDENCIES = {
|
|
22
|
+
"@stoplight/prism-cli": "^5.14.2"
|
|
23
|
+
};
|
|
24
|
+
function registerProScaffoldHooks() {
|
|
25
|
+
registerScaffoldHook({
|
|
26
|
+
type: "preInstall",
|
|
27
|
+
name: "pro-dependencies",
|
|
28
|
+
priority: 10,
|
|
29
|
+
critical: false,
|
|
30
|
+
handler: async (ctx) => {
|
|
31
|
+
const packageJson = ctx.packageJson;
|
|
32
|
+
const dependencies = packageJson.dependencies || {};
|
|
33
|
+
const devDependencies = packageJson.devDependencies || {};
|
|
34
|
+
const scripts = packageJson.scripts || {};
|
|
35
|
+
for (const [pkgName, version] of Object.entries(STACKWRIGHT_NPM_VERSIONS)) {
|
|
36
|
+
if (dependencies[pkgName] === "workspace:*") {
|
|
37
|
+
dependencies[pkgName] = version;
|
|
38
|
+
}
|
|
39
|
+
if (devDependencies[pkgName] === "workspace:*") {
|
|
40
|
+
devDependencies[pkgName] = version;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
dependencies["@stackwright/mcp"] = STACKWRIGHT_NPM_VERSIONS["@stackwright/mcp"];
|
|
44
|
+
dependencies["@stackwright-pro/mcp"] = "latest";
|
|
45
|
+
Object.assign(dependencies, PRO_DEPENDENCIES);
|
|
46
|
+
Object.assign(devDependencies, PRO_DEV_DEPENDENCIES);
|
|
47
|
+
Object.assign(scripts, {
|
|
48
|
+
"dev:admin": "MOCK_USER=admin next dev",
|
|
49
|
+
"dev:analyst": "MOCK_USER=analyst next dev",
|
|
50
|
+
"dev:viewer": "MOCK_USER=viewer next dev",
|
|
51
|
+
prebuild: "node scripts/prebuild.js",
|
|
52
|
+
predev: "node scripts/prebuild.js"
|
|
53
|
+
});
|
|
54
|
+
packageJson.dependencies = dependencies;
|
|
55
|
+
packageJson.devDependencies = devDependencies;
|
|
56
|
+
packageJson.scripts = scripts;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
registerScaffoldHook({
|
|
60
|
+
type: "preInstall",
|
|
61
|
+
name: "pro-mcp-config",
|
|
62
|
+
priority: 20,
|
|
63
|
+
critical: false,
|
|
64
|
+
handler: async (ctx) => {
|
|
65
|
+
const codePuppyConfig = ctx.codePuppyConfig || {};
|
|
66
|
+
codePuppyConfig.mcp_servers = codePuppyConfig.mcp_servers || {};
|
|
67
|
+
codePuppyConfig.mcp_servers["stackwright-pro"] = {
|
|
68
|
+
command: "node",
|
|
69
|
+
args: ["node_modules/@stackwright-pro/mcp/dist/server.js"],
|
|
70
|
+
env: { NODE_ENV: "development" }
|
|
71
|
+
};
|
|
72
|
+
codePuppyConfig.agents_path = [
|
|
73
|
+
"node_modules/@stackwright/otters",
|
|
74
|
+
"node_modules/@stackwright-pro/otters"
|
|
75
|
+
];
|
|
76
|
+
ctx.codePuppyConfig = codePuppyConfig;
|
|
77
|
+
console.log(chalk.green("\u2705 Pro MCP server configured"));
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
registerScaffoldHook({
|
|
81
|
+
type: "postInstall",
|
|
82
|
+
name: "verify-pro-installation",
|
|
83
|
+
priority: 50,
|
|
84
|
+
critical: false,
|
|
85
|
+
handler: async () => {
|
|
86
|
+
console.log(chalk.cyan("\u{1F9A6}\u{1F9A6} Pro packages ready!"));
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
console.log(chalk.bold.cyan("\u{1F9A6}\u{1F517} @stackwright-pro/scaffold-hooks registered"));
|
|
90
|
+
}
|
|
91
|
+
var createProScaffoldHooks = registerProScaffoldHooks;
|
|
92
|
+
export {
|
|
93
|
+
createProScaffoldHooks,
|
|
94
|
+
registerProScaffoldHooks
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @stackwright-pro/scaffold-hooks\n *\n * Auto-registers Pro packages during Stackwright project scaffolding.\n * Uses @stackwright/hooks-registry singleton to survive module boundary crossings.\n */\n\nimport chalk from 'chalk';\nimport { registerScaffoldHook, type ScaffoldHookContext } from '@stackwright/hooks-registry';\n\n// Fixed npm versions for @stackwright/* packages\nconst STACKWRIGHT_NPM_VERSIONS: Record<string, string> = {\n '@stackwright/core': '^0.7.0',\n '@stackwright/icons': '^0.3.0',\n '@stackwright/nextjs': '^0.3.1',\n '@stackwright/ui-shadcn': '^0.1.0',\n '@stackwright/build-scripts': '^0.4.0',\n '@stackwright/mcp': '^0.2.0',\n '@stackwright/otters': '^0.2.0',\n};\n\nconst PRO_DEPENDENCIES: Record<string, string> = {\n '@stackwright-pro/mcp': 'latest',\n '@stackwright-pro/otters': 'latest',\n '@stackwright-pro/openapi': 'latest',\n '@stackwright-pro/auth': 'latest',\n '@stackwright-pro/auth-nextjs': 'latest',\n zod: '^3.23.0',\n};\n\nconst PRO_DEV_DEPENDENCIES: Record<string, string> = {\n '@stoplight/prism-cli': '^5.14.2',\n};\n\n/**\n * Register all Pro scaffold hooks with the shared registry.\n *\n * Uses @stackwright/hooks-registry's globalThis-based singleton so hooks\n * survive module boundary crossings between Pro packages and the CLI.\n *\n * Call this BEFORE calling scaffold() to ensure hooks run in the correct context.\n *\n * @example\n * ```typescript\n * import { registerProScaffoldHooks } from '@stackwright-pro/scaffold-hooks';\n *\n * // Register hooks (they go to the shared global registry)\n * registerProScaffoldHooks();\n *\n * // Now when CLI calls scaffold(), it will see these hooks\n * ```\n */\nexport function registerProScaffoldHooks(): void {\n registerScaffoldHook({\n type: 'preInstall',\n name: 'pro-dependencies',\n priority: 10,\n critical: false,\n handler: async (ctx: ScaffoldHookContext) => {\n const packageJson = ctx.packageJson as Record<string, unknown>;\n const dependencies = (packageJson.dependencies as Record<string, string>) || {};\n const devDependencies = (packageJson.devDependencies as Record<string, string>) || {};\n const scripts = (packageJson.scripts as Record<string, string>) || {};\n\n // Fix workspace:* references from scaffold\n for (const [pkgName, version] of Object.entries(STACKWRIGHT_NPM_VERSIONS)) {\n if (dependencies[pkgName] === 'workspace:*') {\n dependencies[pkgName] = version;\n }\n if (devDependencies[pkgName] === 'workspace:*') {\n devDependencies[pkgName] = version;\n }\n }\n\n // Add Pro MCP packages\n dependencies['@stackwright/mcp'] = STACKWRIGHT_NPM_VERSIONS['@stackwright/mcp']!;\n dependencies['@stackwright-pro/mcp'] = 'latest';\n\n // Add Pro dependencies\n Object.assign(dependencies, PRO_DEPENDENCIES);\n Object.assign(devDependencies, PRO_DEV_DEPENDENCIES);\n\n // Add role-based dev scripts\n Object.assign(scripts, {\n 'dev:admin': 'MOCK_USER=admin next dev',\n 'dev:analyst': 'MOCK_USER=analyst next dev',\n 'dev:viewer': 'MOCK_USER=viewer next dev',\n prebuild: 'node scripts/prebuild.js',\n predev: 'node scripts/prebuild.js',\n });\n\n packageJson.dependencies = dependencies;\n packageJson.devDependencies = devDependencies;\n packageJson.scripts = scripts;\n },\n });\n\n registerScaffoldHook({\n type: 'preInstall',\n name: 'pro-mcp-config',\n priority: 20,\n critical: false,\n handler: async (ctx) => {\n const codePuppyConfig = (ctx.codePuppyConfig || {}) as Record<string, unknown>;\n\n // Ensure structure exists\n codePuppyConfig.mcp_servers = codePuppyConfig.mcp_servers || {};\n\n // Add Pro MCP server\n (codePuppyConfig.mcp_servers as Record<string, unknown>)['stackwright-pro'] = {\n command: 'node',\n args: ['node_modules/@stackwright-pro/mcp/dist/server.js'],\n env: { NODE_ENV: 'development' },\n };\n\n // Set agents_path to include both OSS and Pro otters\n codePuppyConfig.agents_path = [\n 'node_modules/@stackwright/otters',\n 'node_modules/@stackwright-pro/otters',\n ];\n\n ctx.codePuppyConfig = codePuppyConfig;\n console.log(chalk.green('✅ Pro MCP server configured'));\n },\n });\n\n registerScaffoldHook({\n type: 'postInstall',\n name: 'verify-pro-installation',\n priority: 50,\n critical: false,\n handler: async () => {\n console.log(chalk.cyan('🦦🦦 Pro packages ready!'));\n },\n });\n\n console.log(chalk.bold.cyan('🦦🔗 @stackwright-pro/scaffold-hooks registered'));\n}\n\n/**\n * @deprecated Use registerProScaffoldHooks() instead. Kept for backward compatibility.\n */\nexport const createProScaffoldHooks = registerProScaffoldHooks;\n"],"mappings":";AAOA,OAAO,WAAW;AAClB,SAAS,4BAAsD;AAG/D,IAAM,2BAAmD;AAAA,EACvD,qBAAqB;AAAA,EACrB,sBAAsB;AAAA,EACtB,uBAAuB;AAAA,EACvB,0BAA0B;AAAA,EAC1B,8BAA8B;AAAA,EAC9B,oBAAoB;AAAA,EACpB,uBAAuB;AACzB;AAEA,IAAM,mBAA2C;AAAA,EAC/C,wBAAwB;AAAA,EACxB,2BAA2B;AAAA,EAC3B,4BAA4B;AAAA,EAC5B,yBAAyB;AAAA,EACzB,gCAAgC;AAAA,EAChC,KAAK;AACP;AAEA,IAAM,uBAA+C;AAAA,EACnD,wBAAwB;AAC1B;AAoBO,SAAS,2BAAiC;AAC/C,uBAAqB;AAAA,IACnB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,UAAU;AAAA,IACV,SAAS,OAAO,QAA6B;AAC3C,YAAM,cAAc,IAAI;AACxB,YAAM,eAAgB,YAAY,gBAA2C,CAAC;AAC9E,YAAM,kBAAmB,YAAY,mBAA8C,CAAC;AACpF,YAAM,UAAW,YAAY,WAAsC,CAAC;AAGpE,iBAAW,CAAC,SAAS,OAAO,KAAK,OAAO,QAAQ,wBAAwB,GAAG;AACzE,YAAI,aAAa,OAAO,MAAM,eAAe;AAC3C,uBAAa,OAAO,IAAI;AAAA,QAC1B;AACA,YAAI,gBAAgB,OAAO,MAAM,eAAe;AAC9C,0BAAgB,OAAO,IAAI;AAAA,QAC7B;AAAA,MACF;AAGA,mBAAa,kBAAkB,IAAI,yBAAyB,kBAAkB;AAC9E,mBAAa,sBAAsB,IAAI;AAGvC,aAAO,OAAO,cAAc,gBAAgB;AAC5C,aAAO,OAAO,iBAAiB,oBAAoB;AAGnD,aAAO,OAAO,SAAS;AAAA,QACrB,aAAa;AAAA,QACb,eAAe;AAAA,QACf,cAAc;AAAA,QACd,UAAU;AAAA,QACV,QAAQ;AAAA,MACV,CAAC;AAED,kBAAY,eAAe;AAC3B,kBAAY,kBAAkB;AAC9B,kBAAY,UAAU;AAAA,IACxB;AAAA,EACF,CAAC;AAED,uBAAqB;AAAA,IACnB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,UAAU;AAAA,IACV,SAAS,OAAO,QAAQ;AACtB,YAAM,kBAAmB,IAAI,mBAAmB,CAAC;AAGjD,sBAAgB,cAAc,gBAAgB,eAAe,CAAC;AAG9D,MAAC,gBAAgB,YAAwC,iBAAiB,IAAI;AAAA,QAC5E,SAAS;AAAA,QACT,MAAM,CAAC,kDAAkD;AAAA,QACzD,KAAK,EAAE,UAAU,cAAc;AAAA,MACjC;AAGA,sBAAgB,cAAc;AAAA,QAC5B;AAAA,QACA;AAAA,MACF;AAEA,UAAI,kBAAkB;AACtB,cAAQ,IAAI,MAAM,MAAM,kCAA6B,CAAC;AAAA,IACxD;AAAA,EACF,CAAC;AAED,uBAAqB;AAAA,IACnB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,UAAU;AAAA,IACV,SAAS,YAAY;AACnB,cAAQ,IAAI,MAAM,KAAK,wCAA0B,CAAC;AAAA,IACpD;AAAA,EACF,CAAC;AAED,UAAQ,IAAI,MAAM,KAAK,KAAK,+DAAiD,CAAC;AAChF;AAKO,IAAM,yBAAyB;","names":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@stackwright-pro/scaffold-hooks",
|
|
3
|
+
"version": "0.0.0-beta-20260417191149",
|
|
4
|
+
"description": "Scaffold hooks for Stackwright Pro - auto-registers Pro packages during project scaffolding",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"module": "./dist/index.mjs",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.mjs",
|
|
12
|
+
"require": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"dist"
|
|
17
|
+
],
|
|
18
|
+
"license": "PROPRIETARY",
|
|
19
|
+
"publishConfig": {
|
|
20
|
+
"access": "public"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"chalk": "^4.1.2"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"tsup": "^8.0.0",
|
|
27
|
+
"typescript": "^5.3.0",
|
|
28
|
+
"vitest": "^4.0.18",
|
|
29
|
+
"@stackwright/hooks-registry": "0.0.0-beta-20260417191149"
|
|
30
|
+
},
|
|
31
|
+
"peerDependencies": {
|
|
32
|
+
"@stackwright/cli": "^0.7.0",
|
|
33
|
+
"@stackwright/hooks-registry": "0.0.0-beta-20260417191149"
|
|
34
|
+
},
|
|
35
|
+
"scripts": {
|
|
36
|
+
"build": "tsup",
|
|
37
|
+
"test": "vitest run",
|
|
38
|
+
"test:coverage": "vitest run --coverage"
|
|
39
|
+
}
|
|
40
|
+
}
|