@memberjunction/server-bootstrap 6.1.0-edge.5 → 6.1.0-edge.6

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memberjunction/server-bootstrap",
3
- "version": "6.1.0-edge.5",
3
+ "version": "6.1.0-edge.6",
4
4
  "description": "MemberJunction Server Bootstrap - Encapsulates all server initialization logic",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -23,126 +23,127 @@
23
23
  "author": "MemberJunction",
24
24
  "license": "BUSL-1.1",
25
25
  "dependencies": {
26
- "@memberjunction/action-runtime-host": "6.1.0-edge.5",
27
- "@memberjunction/actions": "6.1.0-edge.5",
28
- "@memberjunction/actions-apollo": "6.1.0-edge.5",
29
- "@memberjunction/actions-base": "6.1.0-edge.5",
30
- "@memberjunction/actions-bizapps-accounting": "6.1.0-edge.5",
31
- "@memberjunction/actions-bizapps-crm": "6.1.0-edge.5",
32
- "@memberjunction/actions-bizapps-formbuilders": "6.1.0-edge.5",
33
- "@memberjunction/actions-bizapps-lms": "6.1.0-edge.5",
34
- "@memberjunction/actions-bizapps-social": "6.1.0-edge.5",
35
- "@memberjunction/actions-content-autotag": "6.1.0-edge.5",
36
- "@memberjunction/ai-agent-harness": "6.1.0-edge.5",
37
- "@memberjunction/ai-agent-manager": "6.1.0-edge.5",
38
- "@memberjunction/ai-agents": "6.1.0-edge.5",
39
- "@memberjunction/ai-anthropic": "6.1.0-edge.5",
40
- "@memberjunction/ai-assemblyai": "6.1.0-edge.5",
41
- "@memberjunction/ai-azure": "6.1.0-edge.5",
42
- "@memberjunction/ai-bedrock": "6.1.0-edge.5",
43
- "@memberjunction/ai-betty-bot": "6.1.0-edge.5",
44
- "@memberjunction/ai-blackforestlabs": "6.1.0-edge.5",
45
- "@memberjunction/ai-bridge-livekit": "6.1.0-edge.5",
46
- "@memberjunction/ai-bridge-ringcentral": "6.1.0-edge.5",
47
- "@memberjunction/ai-bridge-server": "6.1.0-edge.5",
48
- "@memberjunction/ai-bridge-teams": "6.1.0-edge.5",
49
- "@memberjunction/ai-bridge-twilio": "6.1.0-edge.5",
50
- "@memberjunction/ai-bridge-vonage": "6.1.0-edge.5",
51
- "@memberjunction/ai-cerebras": "6.1.0-edge.5",
52
- "@memberjunction/ai-cohere": "6.1.0-edge.5",
53
- "@memberjunction/ai-core-plus": "6.1.0-edge.5",
54
- "@memberjunction/ai-elevenlabs": "6.1.0-edge.5",
55
- "@memberjunction/ai-engine-base": "6.1.0-edge.5",
56
- "@memberjunction/ai-fireworks": "6.1.0-edge.5",
57
- "@memberjunction/ai-form-builder": "6.1.0-edge.5",
58
- "@memberjunction/ai-gemini": "6.1.0-edge.5",
59
- "@memberjunction/ai-groq": "6.1.0-edge.5",
60
- "@memberjunction/ai-heygen": "6.1.0-edge.5",
61
- "@memberjunction/ai-huggingface": "6.1.0-edge.5",
62
- "@memberjunction/ai-inception": "6.1.0-edge.5",
63
- "@memberjunction/ai-inworld": "6.1.0-edge.5",
64
- "@memberjunction/ai-llamacpp": "6.1.0-edge.5",
65
- "@memberjunction/ai-lmstudio": "6.1.0-edge.5",
66
- "@memberjunction/ai-local-embeddings": "6.1.0-edge.5",
67
- "@memberjunction/ai-minimax": "6.1.0-edge.5",
68
- "@memberjunction/ai-mistral": "6.1.0-edge.5",
69
- "@memberjunction/ai-ollama": "6.1.0-edge.5",
70
- "@memberjunction/ai-openai": "6.1.0-edge.5",
71
- "@memberjunction/ai-openrouter": "6.1.0-edge.5",
72
- "@memberjunction/ai-prompts": "6.1.0-edge.5",
73
- "@memberjunction/ai-provider-bundle": "6.1.0-edge.5",
74
- "@memberjunction/ai-recommendations-rex": "6.1.0-edge.5",
75
- "@memberjunction/ai-reranker": "6.1.0-edge.5",
76
- "@memberjunction/ai-segmentation": "6.1.0-edge.5",
77
- "@memberjunction/ai-vector-dupe": "6.1.0-edge.5",
78
- "@memberjunction/ai-vectors-memory": "6.1.0-edge.5",
79
- "@memberjunction/ai-vectors-pgvector": "6.1.0-edge.5",
80
- "@memberjunction/ai-vectors-pinecone": "6.1.0-edge.5",
81
- "@memberjunction/ai-vectors-qdrant": "6.1.0-edge.5",
82
- "@memberjunction/ai-vectors-sqlserver": "6.1.0-edge.5",
83
- "@memberjunction/ai-vertex": "6.1.0-edge.5",
84
- "@memberjunction/ai-xai": "6.1.0-edge.5",
85
- "@memberjunction/ai-zhipu": "6.1.0-edge.5",
86
- "@memberjunction/archiving-action": "6.1.0-edge.5",
87
- "@memberjunction/archiving-engine": "6.1.0-edge.5",
88
- "@memberjunction/auth-providers": "6.1.0-edge.5",
89
- "@memberjunction/codegen-lib": "6.1.0-edge.5",
90
- "@memberjunction/communication-ms-graph": "6.1.0-edge.5",
91
- "@memberjunction/communication-sendgrid": "6.1.0-edge.5",
92
- "@memberjunction/communication-types": "6.1.0-edge.5",
93
- "@memberjunction/computer-use-engine": "6.1.0-edge.5",
94
- "@memberjunction/content-autotagging": "6.1.0-edge.5",
95
- "@memberjunction/core": "6.1.0-edge.5",
96
- "@memberjunction/core-actions": "6.1.0-edge.5",
97
- "@memberjunction/core-entities": "6.1.0-edge.5",
98
- "@memberjunction/core-entities-server": "6.1.0-edge.5",
99
- "@memberjunction/data-context-server": "6.1.0-edge.5",
100
- "@memberjunction/database-designer-actions": "6.1.0-edge.5",
101
- "@memberjunction/database-designer-core": "6.1.0-edge.5",
102
- "@memberjunction/doc-utils": "6.1.0-edge.5",
103
- "@memberjunction/encryption": "6.1.0-edge.5",
104
- "@memberjunction/entity-communications-base": "6.1.0-edge.5",
105
- "@memberjunction/esignature": "6.1.0-edge.5",
106
- "@memberjunction/esignature-docusign": "6.1.0-edge.5",
107
- "@memberjunction/esignature-dropboxsign": "6.1.0-edge.5",
108
- "@memberjunction/esignature-pandadoc": "6.1.0-edge.5",
109
- "@memberjunction/external-data-source-databricks": "6.1.0-edge.5",
110
- "@memberjunction/external-data-source-mongodb": "6.1.0-edge.5",
111
- "@memberjunction/external-data-source-mysql": "6.1.0-edge.5",
112
- "@memberjunction/external-data-source-oracle": "6.1.0-edge.5",
113
- "@memberjunction/external-data-source-postgres": "6.1.0-edge.5",
114
- "@memberjunction/external-data-source-snowflake": "6.1.0-edge.5",
115
- "@memberjunction/external-data-source-sqlserver": "6.1.0-edge.5",
116
- "@memberjunction/external-data-sources": "6.1.0-edge.5",
117
- "@memberjunction/geo-core": "6.1.0-edge.5",
118
- "@memberjunction/integration-actions": "6.1.0-edge.5",
119
- "@memberjunction/integration-engine": "6.1.0-edge.5",
120
- "@memberjunction/messaging-adapters": "6.1.0-edge.5",
121
- "@memberjunction/predictive-studio": "6.1.0-edge.5",
122
- "@memberjunction/queue": "6.1.0-edge.5",
123
- "@memberjunction/react-linter": "6.1.0-edge.5",
124
- "@memberjunction/record-comparison": "6.1.0-edge.5",
125
- "@memberjunction/record-set-processor": "6.1.0-edge.5",
126
- "@memberjunction/remote-browser-selfhost": "6.1.0-edge.5",
127
- "@memberjunction/remote-browser-server": "6.1.0-edge.5",
128
- "@memberjunction/scheduling-actions": "6.1.0-edge.5",
129
- "@memberjunction/scheduling-engine": "6.1.0-edge.5",
130
- "@memberjunction/scheduling-engine-base": "6.1.0-edge.5",
131
- "@memberjunction/search-engine": "6.1.0-edge.5",
132
- "@memberjunction/server": "6.1.0-edge.5",
133
- "@memberjunction/server-extensions-core": "6.1.0-edge.5",
134
- "@memberjunction/storage": "6.1.0-edge.5",
135
- "@memberjunction/tag-engine-base": "6.1.0-edge.5",
136
- "@memberjunction/task-graph": "6.1.0-edge.5",
137
- "@memberjunction/templates": "6.1.0-edge.5",
138
- "@memberjunction/testing-engine": "6.1.0-edge.5",
139
- "@memberjunction/testing-integration": "6.1.0-edge.5",
26
+ "@memberjunction/action-runtime-host": "6.1.0-edge.6",
27
+ "@memberjunction/actions": "6.1.0-edge.6",
28
+ "@memberjunction/actions-apollo": "6.1.0-edge.6",
29
+ "@memberjunction/actions-base": "6.1.0-edge.6",
30
+ "@memberjunction/actions-bizapps-accounting": "6.1.0-edge.6",
31
+ "@memberjunction/actions-bizapps-crm": "6.1.0-edge.6",
32
+ "@memberjunction/actions-bizapps-formbuilders": "6.1.0-edge.6",
33
+ "@memberjunction/actions-bizapps-lms": "6.1.0-edge.6",
34
+ "@memberjunction/actions-bizapps-social": "6.1.0-edge.6",
35
+ "@memberjunction/actions-content-autotag": "6.1.0-edge.6",
36
+ "@memberjunction/ai-agent-harness": "6.1.0-edge.6",
37
+ "@memberjunction/ai-agent-manager": "6.1.0-edge.6",
38
+ "@memberjunction/ai-agents": "6.1.0-edge.6",
39
+ "@memberjunction/ai-anthropic": "6.1.0-edge.6",
40
+ "@memberjunction/ai-assemblyai": "6.1.0-edge.6",
41
+ "@memberjunction/ai-azure": "6.1.0-edge.6",
42
+ "@memberjunction/ai-bedrock": "6.1.0-edge.6",
43
+ "@memberjunction/ai-betty-bot": "6.1.0-edge.6",
44
+ "@memberjunction/ai-blackforestlabs": "6.1.0-edge.6",
45
+ "@memberjunction/ai-bridge-livekit": "6.1.0-edge.6",
46
+ "@memberjunction/ai-bridge-ringcentral": "6.1.0-edge.6",
47
+ "@memberjunction/ai-bridge-server": "6.1.0-edge.6",
48
+ "@memberjunction/ai-bridge-teams": "6.1.0-edge.6",
49
+ "@memberjunction/ai-bridge-twilio": "6.1.0-edge.6",
50
+ "@memberjunction/ai-bridge-vonage": "6.1.0-edge.6",
51
+ "@memberjunction/ai-cerebras": "6.1.0-edge.6",
52
+ "@memberjunction/ai-cohere": "6.1.0-edge.6",
53
+ "@memberjunction/ai-core-plus": "6.1.0-edge.6",
54
+ "@memberjunction/ai-elevenlabs": "6.1.0-edge.6",
55
+ "@memberjunction/ai-engine-base": "6.1.0-edge.6",
56
+ "@memberjunction/ai-fireworks": "6.1.0-edge.6",
57
+ "@memberjunction/ai-form-builder": "6.1.0-edge.6",
58
+ "@memberjunction/ai-gemini": "6.1.0-edge.6",
59
+ "@memberjunction/ai-groq": "6.1.0-edge.6",
60
+ "@memberjunction/ai-heygen": "6.1.0-edge.6",
61
+ "@memberjunction/ai-huggingface": "6.1.0-edge.6",
62
+ "@memberjunction/ai-inception": "6.1.0-edge.6",
63
+ "@memberjunction/ai-inworld": "6.1.0-edge.6",
64
+ "@memberjunction/ai-llamacpp": "6.1.0-edge.6",
65
+ "@memberjunction/ai-lmstudio": "6.1.0-edge.6",
66
+ "@memberjunction/ai-local-embeddings": "6.1.0-edge.6",
67
+ "@memberjunction/ai-minimax": "6.1.0-edge.6",
68
+ "@memberjunction/ai-mistral": "6.1.0-edge.6",
69
+ "@memberjunction/ai-ollama": "6.1.0-edge.6",
70
+ "@memberjunction/ai-openai": "6.1.0-edge.6",
71
+ "@memberjunction/ai-openrouter": "6.1.0-edge.6",
72
+ "@memberjunction/ai-prompts": "6.1.0-edge.6",
73
+ "@memberjunction/ai-provider-bundle": "6.1.0-edge.6",
74
+ "@memberjunction/ai-recommendations-rex": "6.1.0-edge.6",
75
+ "@memberjunction/ai-reranker": "6.1.0-edge.6",
76
+ "@memberjunction/ai-segmentation": "6.1.0-edge.6",
77
+ "@memberjunction/ai-vector-dupe": "6.1.0-edge.6",
78
+ "@memberjunction/ai-vectors-memory": "6.1.0-edge.6",
79
+ "@memberjunction/ai-vectors-pgvector": "6.1.0-edge.6",
80
+ "@memberjunction/ai-vectors-pinecone": "6.1.0-edge.6",
81
+ "@memberjunction/ai-vectors-qdrant": "6.1.0-edge.6",
82
+ "@memberjunction/ai-vectors-sqlserver": "6.1.0-edge.6",
83
+ "@memberjunction/ai-vertex": "6.1.0-edge.6",
84
+ "@memberjunction/ai-xai": "6.1.0-edge.6",
85
+ "@memberjunction/ai-zhipu": "6.1.0-edge.6",
86
+ "@memberjunction/archiving-action": "6.1.0-edge.6",
87
+ "@memberjunction/archiving-engine": "6.1.0-edge.6",
88
+ "@memberjunction/auth-providers": "6.1.0-edge.6",
89
+ "@memberjunction/codegen-lib": "6.1.0-edge.6",
90
+ "@memberjunction/communication-ms-graph": "6.1.0-edge.6",
91
+ "@memberjunction/communication-sendgrid": "6.1.0-edge.6",
92
+ "@memberjunction/communication-types": "6.1.0-edge.6",
93
+ "@memberjunction/computer-use-engine": "6.1.0-edge.6",
94
+ "@memberjunction/content-autotagging": "6.1.0-edge.6",
95
+ "@memberjunction/core": "6.1.0-edge.6",
96
+ "@memberjunction/core-actions": "6.1.0-edge.6",
97
+ "@memberjunction/core-entities": "6.1.0-edge.6",
98
+ "@memberjunction/core-entities-server": "6.1.0-edge.6",
99
+ "@memberjunction/data-context-server": "6.1.0-edge.6",
100
+ "@memberjunction/database-designer-actions": "6.1.0-edge.6",
101
+ "@memberjunction/database-designer-core": "6.1.0-edge.6",
102
+ "@memberjunction/doc-utils": "6.1.0-edge.6",
103
+ "@memberjunction/dynamic-packages": "6.1.0-edge.6",
104
+ "@memberjunction/encryption": "6.1.0-edge.6",
105
+ "@memberjunction/entity-communications-base": "6.1.0-edge.6",
106
+ "@memberjunction/esignature": "6.1.0-edge.6",
107
+ "@memberjunction/esignature-docusign": "6.1.0-edge.6",
108
+ "@memberjunction/esignature-dropboxsign": "6.1.0-edge.6",
109
+ "@memberjunction/esignature-pandadoc": "6.1.0-edge.6",
110
+ "@memberjunction/external-data-source-databricks": "6.1.0-edge.6",
111
+ "@memberjunction/external-data-source-mongodb": "6.1.0-edge.6",
112
+ "@memberjunction/external-data-source-mysql": "6.1.0-edge.6",
113
+ "@memberjunction/external-data-source-oracle": "6.1.0-edge.6",
114
+ "@memberjunction/external-data-source-postgres": "6.1.0-edge.6",
115
+ "@memberjunction/external-data-source-snowflake": "6.1.0-edge.6",
116
+ "@memberjunction/external-data-source-sqlserver": "6.1.0-edge.6",
117
+ "@memberjunction/external-data-sources": "6.1.0-edge.6",
118
+ "@memberjunction/geo-core": "6.1.0-edge.6",
119
+ "@memberjunction/integration-actions": "6.1.0-edge.6",
120
+ "@memberjunction/integration-engine": "6.1.0-edge.6",
121
+ "@memberjunction/messaging-adapters": "6.1.0-edge.6",
122
+ "@memberjunction/predictive-studio": "6.1.0-edge.6",
123
+ "@memberjunction/queue": "6.1.0-edge.6",
124
+ "@memberjunction/react-linter": "6.1.0-edge.6",
125
+ "@memberjunction/record-comparison": "6.1.0-edge.6",
126
+ "@memberjunction/record-set-processor": "6.1.0-edge.6",
127
+ "@memberjunction/remote-browser-selfhost": "6.1.0-edge.6",
128
+ "@memberjunction/remote-browser-server": "6.1.0-edge.6",
129
+ "@memberjunction/scheduling-actions": "6.1.0-edge.6",
130
+ "@memberjunction/scheduling-engine": "6.1.0-edge.6",
131
+ "@memberjunction/scheduling-engine-base": "6.1.0-edge.6",
132
+ "@memberjunction/search-engine": "6.1.0-edge.6",
133
+ "@memberjunction/server": "6.1.0-edge.6",
134
+ "@memberjunction/server-extensions-core": "6.1.0-edge.6",
135
+ "@memberjunction/storage": "6.1.0-edge.6",
136
+ "@memberjunction/tag-engine-base": "6.1.0-edge.6",
137
+ "@memberjunction/task-graph": "6.1.0-edge.6",
138
+ "@memberjunction/templates": "6.1.0-edge.6",
139
+ "@memberjunction/testing-engine": "6.1.0-edge.6",
140
+ "@memberjunction/testing-integration": "6.1.0-edge.6",
140
141
  "cosmiconfig": "^9.0.0"
141
142
  },
142
143
  "devDependencies": {
143
144
  "@types/node": "^24.10.11",
144
145
  "typescript": "^5.9.3",
145
- "@memberjunction/global": "6.1.0-edge.5"
146
+ "@memberjunction/global": "6.1.0-edge.6"
146
147
  },
147
148
  "files": [
148
149
  "dist/**/*"
@@ -152,7 +153,7 @@
152
153
  "url": "https://github.com/MemberJunction/MJ"
153
154
  },
154
155
  "scripts": {
155
- "prebuild": "mj codegen manifest --output ./src/generated/mj-class-registrations.ts || echo 'Warning: mj codegen manifest not available, using existing manifest'",
156
+ "prebuild": "node ../../packages/MJCLI/bin/run.js codegen manifest --output ./src/generated/mj-class-registrations.ts || echo 'Warning: workspace CLI not built yet (build @memberjunction/cli first), using existing manifest'",
156
157
  "build": "tsc && tsc-alias -f",
157
158
  "watch": "tsc --watch",
158
159
  "clean": "rimraf dist",
@@ -1,27 +0,0 @@
1
- /**
2
- * True when the error is a module-RESOLUTION failure (the module could not be found or
3
- * reached), as opposed to a module that was found but threw while loading — the latter is
4
- * a real error that must surface. ESM raises ERR_MODULE_NOT_FOUND, CommonJS resolution
5
- * (createRequire) raises MODULE_NOT_FOUND, and an exports-map mismatch raises
6
- * ERR_PACKAGE_PATH_NOT_EXPORTED. Some ESM loader shims (ts-node's, notably — the loader
7
- * MJAPI runs under) throw resolution failures as PLAIN Errors with no code at all, so
8
- * when there is no code, recognize Node's own resolver message instead.
9
- *
10
- * ⚠ Under ts-node's shim the coded branch never fires (the shim strips custom error
11
- * properties crossing the module-hooks thread), so the message branch is LOAD-BEARING
12
- * there: if a future Node rewords its resolver messages, this predicate must be updated
13
- * or the pnpm fallback silently stops working under ts-node hosts.
14
- *
15
- * Keep in sync with `IsModuleResolutionFailure` in @memberjunction/open-app-engine's
16
- * `src/install/migration-runner.ts` — same heuristic, duplicated because the two
17
- * packages cannot depend on each other and cross-package re-exports are disallowed.
18
- */
19
- export declare function isResolutionFailure(error: unknown): boolean;
20
- /**
21
- * Resolves the on-disk `package.json` of a host-visible package so callers can
22
- * introspect `memberjunction.serverExtensions` without relying on an exports map.
23
- * Returns `null` when no host anchor can see the package.
24
- */
25
- export declare function resolvePackageJsonFromHost(pkgName: string, configFilePath?: string): string | null;
26
- export declare function importFromHost(pkgName: string, configFilePath?: string): Promise<Record<string, unknown>>;
27
- //# sourceMappingURL=host-import.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"host-import.d.ts","sourceRoot":"","sources":["../src/host-import.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAM3D;AAuDD;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAyBlG;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAyC/G"}
@@ -1,170 +0,0 @@
1
- /**
2
- * Host-anchored dynamic import for runtime-configured packages.
3
- *
4
- * A bare `import(pkgName)` resolves from THIS package (server-bootstrap), which cannot
5
- * declare packages whose names are only known at runtime — mj.config.cjs supplies them.
6
- * npm's hoisted node_modules let that bare import resolve by accident; pnpm's strict
7
- * per-package layout does not, because the packages are declared by (and linked into) the
8
- * HOST application, e.g. MJAPI. `importFromHost` tries the bare import first (identical
9
- * behavior to before on npm layouts) and, when the package cannot be resolved, retries
10
- * from each host anchor — the working directory, the mj.config.cjs that named the
11
- * package, and the process entrypoint. (Dynamic import is justified here as runtime
12
- * plugin discovery: the names come from configuration, not code.)
13
- */
14
- import { createRequire } from 'node:module';
15
- import { readFileSync } from 'node:fs';
16
- import { pathToFileURL } from 'node:url';
17
- import path from 'node:path';
18
- /**
19
- * True when the error is a module-RESOLUTION failure (the module could not be found or
20
- * reached), as opposed to a module that was found but threw while loading — the latter is
21
- * a real error that must surface. ESM raises ERR_MODULE_NOT_FOUND, CommonJS resolution
22
- * (createRequire) raises MODULE_NOT_FOUND, and an exports-map mismatch raises
23
- * ERR_PACKAGE_PATH_NOT_EXPORTED. Some ESM loader shims (ts-node's, notably — the loader
24
- * MJAPI runs under) throw resolution failures as PLAIN Errors with no code at all, so
25
- * when there is no code, recognize Node's own resolver message instead.
26
- *
27
- * ⚠ Under ts-node's shim the coded branch never fires (the shim strips custom error
28
- * properties crossing the module-hooks thread), so the message branch is LOAD-BEARING
29
- * there: if a future Node rewords its resolver messages, this predicate must be updated
30
- * or the pnpm fallback silently stops working under ts-node hosts.
31
- *
32
- * Keep in sync with `IsModuleResolutionFailure` in @memberjunction/open-app-engine's
33
- * `src/install/migration-runner.ts` — same heuristic, duplicated because the two
34
- * packages cannot depend on each other and cross-package re-exports are disallowed.
35
- */
36
- export function isResolutionFailure(error) {
37
- const { code, message } = error ?? {};
38
- if (code === 'ERR_MODULE_NOT_FOUND' || code === 'MODULE_NOT_FOUND' || code === 'ERR_PACKAGE_PATH_NOT_EXPORTED') {
39
- return true;
40
- }
41
- return code === undefined && typeof message === 'string' && /^Cannot find (package|module) /.test(message);
42
- }
43
- /**
44
- * Imports a runtime-configured package from the HOST application's context.
45
- *
46
- * Resolution and evaluation are handled separately on the fallback path: an anchor that
47
- * cannot SEE the package means "try the next anchor", but once an anchor resolves it,
48
- * any failure from loading the module (a missing transitive dependency, a throw in its
49
- * top-level code) is the module's own problem and is surfaced as-is — never masked by
50
- * the original "cannot find package" error.
51
- *
52
- * Note on the resolver: `createRequire().resolve` runs under CommonJS conditions, so a
53
- * package whose exports map declares ONLY an `"import"` condition cannot be resolved by
54
- * the fallback (surfaced with an actionable error). On a dual CJS/ESM package it selects
55
- * the CJS entry, so `import()` of that file would load a second physical module instance
56
- * alongside any ESM copy already in the process — fine for MJ-shaped single-condition
57
- * packages, but keep it in mind before widening this mechanism.
58
- */
59
- /**
60
- * Host anchors used to resolve runtime-configured packages. The mj.config.cjs that
61
- * named the package is first — cwd can be a different checkout.
62
- */
63
- function hostAnchors(configFilePath) {
64
- return [
65
- configFilePath,
66
- path.join(process.cwd(), 'package.json'),
67
- process.argv[1],
68
- ].filter((anchor) => typeof anchor === 'string' && anchor.length > 0);
69
- }
70
- /**
71
- * Walks up from a resolved file looking for a `package.json` whose `name` matches.
72
- * Used when the package's exports map does not expose `./package.json`.
73
- */
74
- function findPackageJsonWithName(fromFile, pkgName) {
75
- let dir = path.dirname(fromFile);
76
- for (let i = 0; i < 8; i++) {
77
- const candidate = path.join(dir, 'package.json');
78
- try {
79
- const json = JSON.parse(readFileSync(candidate, 'utf8'));
80
- if (json.name === pkgName) {
81
- return candidate;
82
- }
83
- }
84
- catch {
85
- // missing or unreadable — keep walking
86
- }
87
- const parent = path.dirname(dir);
88
- if (parent === dir) {
89
- break;
90
- }
91
- dir = parent;
92
- }
93
- return null;
94
- }
95
- /**
96
- * Resolves the on-disk `package.json` of a host-visible package so callers can
97
- * introspect `memberjunction.serverExtensions` without relying on an exports map.
98
- * Returns `null` when no host anchor can see the package.
99
- */
100
- export function resolvePackageJsonFromHost(pkgName, configFilePath) {
101
- for (const anchor of hostAnchors(configFilePath)) {
102
- const req = createRequire(anchor);
103
- try {
104
- return req.resolve(`${pkgName}/package.json`);
105
- }
106
- catch (resolveError) {
107
- if (resolveError?.code === 'ERR_PACKAGE_PATH_NOT_EXPORTED') {
108
- // exports map omits package.json — resolve the main entry and walk up.
109
- }
110
- else if (!isResolutionFailure(resolveError)) {
111
- throw resolveError;
112
- }
113
- }
114
- try {
115
- const main = req.resolve(pkgName);
116
- const found = findPackageJsonWithName(main, pkgName);
117
- if (found) {
118
- return found;
119
- }
120
- }
121
- catch (mainError) {
122
- if (!isResolutionFailure(mainError) && mainError?.code !== 'ERR_PACKAGE_PATH_NOT_EXPORTED') {
123
- throw mainError;
124
- }
125
- }
126
- }
127
- return null;
128
- }
129
- export async function importFromHost(pkgName, configFilePath) {
130
- try {
131
- return (await import(pkgName));
132
- }
133
- catch (error) {
134
- if (!isResolutionFailure(error)) {
135
- throw error;
136
- }
137
- // Anchor priority: the mj.config.cjs that NAMED the package is the authoritative host,
138
- // so it is consulted first — cwd can be a different checkout entirely (an operator
139
- // launching instance A's server from instance B's directory would otherwise silently
140
- // load B's copy). cwd and the process entrypoint are fallbacks for hosts whose config
141
- // lives outside the tree that carries the packages (e.g. a workspace-root config with
142
- // the packages linked into the app directory).
143
- const anchors = hostAnchors(configFilePath);
144
- let sawExportsMapMismatch = false;
145
- for (const anchor of anchors) {
146
- let resolved;
147
- try {
148
- resolved = createRequire(anchor).resolve(pkgName);
149
- }
150
- catch (resolveError) {
151
- if (resolveError?.code === 'ERR_PACKAGE_PATH_NOT_EXPORTED') {
152
- sawExportsMapMismatch = true;
153
- continue;
154
- }
155
- if (!isResolutionFailure(resolveError)) {
156
- throw resolveError;
157
- }
158
- continue; // this anchor can't see the package — try the next
159
- }
160
- // Resolved. Anything that fails from here is the module's own problem — surface it.
161
- return (await import(pathToFileURL(resolved).href));
162
- }
163
- if (sawExportsMapMismatch) {
164
- throw new Error(`Package '${pkgName}' is reachable from the host, but its exports map has no CJS-resolvable condition ` +
165
- `(add a "default" or "require" condition to its package.json exports), so the host-anchored fallback cannot load it.`, { cause: error });
166
- }
167
- throw error; // no anchor resolved it — surface the original bare-import failure
168
- }
169
- }
170
- //# sourceMappingURL=host-import.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"host-import.js","sourceRoot":"","sources":["../src/host-import.ts"],"names":[],"mappings":"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"}