adnbn 0.6.1 → 0.7.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/dist/cli/builders/csp/AbstractCsp.d.ts +9 -0
- package/dist/cli/builders/csp/AbstractCsp.js +26 -0
- package/dist/cli/builders/csp/AbstractCsp.js.map +1 -0
- package/dist/cli/builders/csp/Csp.d.ts +8 -0
- package/dist/cli/builders/csp/Csp.js +39 -0
- package/dist/cli/builders/csp/Csp.js.map +1 -0
- package/dist/cli/builders/csp/SandboxCsp.d.ts +11 -0
- package/dist/cli/builders/csp/SandboxCsp.js +62 -0
- package/dist/cli/builders/csp/SandboxCsp.js.map +1 -0
- package/dist/cli/builders/csp/index.d.ts +3 -0
- package/dist/cli/builders/csp/index.js +7 -0
- package/dist/cli/builders/csp/index.js.map +1 -0
- package/dist/cli/builders/csp/types.d.ts +4 -0
- package/dist/cli/builders/csp/types.js +1 -0
- package/dist/cli/builders/csp/types.js.map +1 -0
- package/dist/cli/builders/manifest/ManifestBase.d.ts +16 -1
- package/dist/cli/builders/manifest/ManifestBase.js +49 -0
- package/dist/cli/builders/manifest/ManifestBase.js.map +1 -1
- package/dist/cli/builders/manifest/ManifestV2.d.ts +2 -0
- package/dist/cli/builders/manifest/ManifestV2.js +31 -1
- package/dist/cli/builders/manifest/ManifestV2.js.map +1 -1
- package/dist/cli/builders/manifest/ManifestV3.d.ts +2 -0
- package/dist/cli/builders/manifest/ManifestV3.js +67 -0
- package/dist/cli/builders/manifest/ManifestV3.js.map +1 -1
- package/dist/cli/entrypoint/file/injectors/core.js +26 -0
- package/dist/cli/entrypoint/file/injectors/core.js.map +1 -1
- package/dist/cli/entrypoint/file/parsers/TypeResolver.d.ts +4 -0
- package/dist/cli/entrypoint/file/parsers/TypeResolver.js +7 -1
- package/dist/cli/entrypoint/file/parsers/TypeResolver.js.map +1 -1
- package/dist/cli/entrypoint/file/resolvers/ImportResolver.js +1 -1
- package/dist/cli/entrypoint/file/resolvers/ImportResolver.js.map +1 -1
- package/dist/cli/entrypoint/finder/OffscreenViewFinder.d.ts +2 -2
- package/dist/cli/entrypoint/finder/OffscreenViewFinder.js +2 -2
- package/dist/cli/entrypoint/finder/OffscreenViewFinder.js.map +1 -1
- package/dist/cli/entrypoint/finder/PageFinder.d.ts +2 -2
- package/dist/cli/entrypoint/finder/PageFinder.js +3 -3
- package/dist/cli/entrypoint/finder/PageFinder.js.map +1 -1
- package/dist/cli/entrypoint/finder/PopupFinder.d.ts +2 -2
- package/dist/cli/entrypoint/finder/PopupFinder.js +2 -2
- package/dist/cli/entrypoint/finder/PopupFinder.js.map +1 -1
- package/dist/cli/entrypoint/finder/SandboxFinder.d.ts +11 -0
- package/dist/cli/entrypoint/finder/SandboxFinder.js +25 -0
- package/dist/cli/entrypoint/finder/SandboxFinder.js.map +1 -0
- package/dist/cli/entrypoint/finder/SandboxViewFinder.d.ts +15 -0
- package/dist/cli/entrypoint/finder/SandboxViewFinder.js +33 -0
- package/dist/cli/entrypoint/finder/SandboxViewFinder.js.map +1 -0
- package/dist/cli/entrypoint/finder/SidebarFinder.d.ts +2 -2
- package/dist/cli/entrypoint/finder/SidebarFinder.js +2 -2
- package/dist/cli/entrypoint/finder/SidebarFinder.js.map +1 -1
- package/dist/cli/entrypoint/finder/ViewCspFinder.d.ts +11 -0
- package/dist/cli/entrypoint/finder/ViewCspFinder.js +24 -0
- package/dist/cli/entrypoint/finder/ViewCspFinder.js.map +1 -0
- package/dist/cli/entrypoint/finder/index.d.ts +3 -0
- package/dist/cli/entrypoint/finder/index.js +34 -28
- package/dist/cli/entrypoint/finder/index.js.map +1 -1
- package/dist/cli/entrypoint/parser/OffscreenParser.d.ts +2 -2
- package/dist/cli/entrypoint/parser/OffscreenParser.js +2 -2
- package/dist/cli/entrypoint/parser/OffscreenParser.js.map +1 -1
- package/dist/cli/entrypoint/parser/PageParser.d.ts +2 -2
- package/dist/cli/entrypoint/parser/PageParser.js +2 -2
- package/dist/cli/entrypoint/parser/PageParser.js.map +1 -1
- package/dist/cli/entrypoint/parser/PopupParser.d.ts +2 -2
- package/dist/cli/entrypoint/parser/PopupParser.js +2 -2
- package/dist/cli/entrypoint/parser/PopupParser.js.map +1 -1
- package/dist/cli/entrypoint/parser/SandboxParser.d.ts +7 -0
- package/dist/cli/entrypoint/parser/SandboxParser.js +42 -0
- package/dist/cli/entrypoint/parser/SandboxParser.js.map +1 -0
- package/dist/cli/entrypoint/parser/SidebarParser.d.ts +2 -2
- package/dist/cli/entrypoint/parser/SidebarParser.js +2 -2
- package/dist/cli/entrypoint/parser/SidebarParser.js.map +1 -1
- package/dist/cli/entrypoint/parser/ViewCspParser.d.ts +9 -0
- package/dist/cli/entrypoint/parser/ViewCspParser.js +26 -0
- package/dist/cli/entrypoint/parser/ViewCspParser.js.map +1 -0
- package/dist/cli/entrypoint/parser/ViewParser.d.ts +80 -80
- package/dist/cli/entrypoint/parser/index.d.ts +1 -0
- package/dist/cli/entrypoint/parser/index.js +8 -6
- package/dist/cli/entrypoint/parser/index.js.map +1 -1
- package/dist/cli/plugins/index.d.ts +2 -1
- package/dist/cli/plugins/index.js +14 -12
- package/dist/cli/plugins/index.js.map +1 -1
- package/dist/cli/plugins/offscreen/index.js +1 -0
- package/dist/cli/plugins/offscreen/index.js.map +1 -1
- package/dist/cli/plugins/page/index.js +1 -1
- package/dist/cli/plugins/page/index.js.map +1 -1
- package/dist/cli/plugins/popup/index.js +1 -1
- package/dist/cli/plugins/popup/index.js.map +1 -1
- package/dist/cli/plugins/sandbox/Sandbox.d.ts +15 -0
- package/dist/cli/plugins/sandbox/Sandbox.js +52 -0
- package/dist/cli/plugins/sandbox/Sandbox.js.map +1 -0
- package/dist/cli/plugins/sandbox/SandboxDeclaration.d.ts +5 -0
- package/dist/cli/plugins/sandbox/SandboxDeclaration.js +10 -0
- package/dist/cli/plugins/sandbox/SandboxDeclaration.js.map +1 -0
- package/dist/cli/plugins/sandbox/index.d.ts +2 -0
- package/dist/cli/plugins/sandbox/index.js +63 -0
- package/dist/cli/plugins/sandbox/index.js.map +1 -0
- package/dist/cli/plugins/sidebar/index.js +1 -0
- package/dist/cli/plugins/sidebar/index.js.map +1 -1
- package/dist/cli/plugins/style/index.d.ts +2 -0
- package/dist/cli/plugins/{style.js → style/index.js} +18 -21
- package/dist/cli/plugins/style/index.js.map +1 -0
- package/dist/cli/plugins/style/utils.d.ts +1 -0
- package/dist/cli/plugins/style/utils.js +86 -0
- package/dist/cli/plugins/style/utils.js.map +1 -0
- package/dist/cli/plugins/typescript/declaration/transport/TransportDeclaration.d.ts +2 -1
- package/dist/cli/plugins/typescript/declaration/transport/TransportDeclaration.js +1 -0
- package/dist/cli/plugins/typescript/declaration/transport/TransportDeclaration.js.map +1 -1
- package/dist/cli/resolvers/config.js +4 -0
- package/dist/cli/resolvers/config.js.map +1 -1
- package/dist/cli/virtual/index.d.ts +1 -0
- package/dist/cli/virtual/index.js +8 -1
- package/dist/cli/virtual/sandbox.d.ts +1 -0
- package/dist/cli/virtual/virtual.d.ts +27 -0
- package/dist/entry/sandbox/Builder.d.ts +15 -0
- package/dist/entry/sandbox/Builder.js +51 -0
- package/dist/entry/sandbox/Builder.js.map +1 -0
- package/dist/entry/sandbox/TransportBuilder.d.ts +8 -0
- package/dist/entry/sandbox/TransportBuilder.js +15 -0
- package/dist/entry/sandbox/TransportBuilder.js.map +1 -0
- package/dist/entry/sandbox/index.d.ts +2 -0
- package/dist/entry/sandbox/index.js +7 -0
- package/dist/entry/sandbox/index.js.map +1 -0
- package/dist/frame/ReadyFrame.d.ts +25 -0
- package/dist/frame/ReadyFrame.js +86 -0
- package/dist/frame/ReadyFrame.js.map +1 -0
- package/dist/frame/index.d.ts +2 -0
- package/dist/frame/index.js +5 -0
- package/dist/frame/index.js.map +1 -0
- package/dist/main/csp.d.ts +2 -0
- package/dist/main/csp.js +5 -0
- package/dist/main/csp.js.map +1 -0
- package/dist/main/index.d.ts +2 -0
- package/dist/main/index.js +2 -0
- package/dist/main/index.js.map +1 -1
- package/dist/main/sandbox.d.ts +9 -0
- package/dist/main/sandbox.js +29 -0
- package/dist/main/sandbox.js.map +1 -0
- package/dist/message/MessageManager.d.ts +0 -3
- package/dist/message/MessageManager.js +2 -24
- package/dist/message/MessageManager.js.map +1 -1
- package/dist/message/error.d.ts +12 -0
- package/dist/message/error.js +55 -0
- package/dist/message/error.js.map +1 -0
- package/dist/message/providers/Message.d.ts +0 -2
- package/dist/message/providers/Message.js +2 -28
- package/dist/message/providers/Message.js.map +1 -1
- package/dist/offscreen/OffscreenBridge.d.ts +1 -3
- package/dist/offscreen/OffscreenBridge.js +12 -56
- package/dist/offscreen/OffscreenBridge.js.map +1 -1
- package/dist/sandbox/SandboxFrame.d.ts +6 -0
- package/dist/sandbox/SandboxFrame.js +31 -0
- package/dist/sandbox/SandboxFrame.js.map +1 -0
- package/dist/sandbox/SandboxManager.d.ts +5 -0
- package/dist/sandbox/SandboxManager.js +12 -0
- package/dist/sandbox/SandboxManager.js.map +1 -0
- package/dist/sandbox/SandboxMessage.d.ts +30 -0
- package/dist/sandbox/SandboxMessage.js +127 -0
- package/dist/sandbox/SandboxMessage.js.map +1 -0
- package/dist/sandbox/index.d.ts +7 -0
- package/dist/sandbox/index.js +6 -0
- package/dist/sandbox/index.js.map +1 -0
- package/dist/sandbox/ports/SandboxHost.d.ts +21 -0
- package/dist/sandbox/ports/SandboxHost.js +58 -0
- package/dist/sandbox/ports/SandboxHost.js.map +1 -0
- package/dist/sandbox/ports/SandboxInner.d.ts +17 -0
- package/dist/sandbox/ports/SandboxInner.js +45 -0
- package/dist/sandbox/ports/SandboxInner.js.map +1 -0
- package/dist/sandbox/ports/SandboxMemory.d.ts +4 -0
- package/dist/sandbox/ports/SandboxMemory.js +42 -0
- package/dist/sandbox/ports/SandboxMemory.js.map +1 -0
- package/dist/sandbox/ports/index.d.ts +3 -0
- package/dist/sandbox/ports/index.js +9 -0
- package/dist/sandbox/ports/index.js.map +1 -0
- package/dist/sandbox/providers/ProxySandbox.d.ts +10 -0
- package/dist/sandbox/providers/ProxySandbox.js +20 -0
- package/dist/sandbox/providers/ProxySandbox.js.map +1 -0
- package/dist/sandbox/providers/RegisterSandbox.d.ts +9 -0
- package/dist/sandbox/providers/RegisterSandbox.js +28 -0
- package/dist/sandbox/providers/RegisterSandbox.js.map +1 -0
- package/dist/sandbox/providers/index.d.ts +2 -0
- package/dist/sandbox/providers/index.js +7 -0
- package/dist/sandbox/providers/index.js.map +1 -0
- package/dist/sandbox/utils.d.ts +4 -0
- package/dist/sandbox/utils.js +10 -0
- package/dist/sandbox/utils.js.map +1 -0
- package/dist/transport/RegisterTransport.d.ts +4 -2
- package/dist/transport/RegisterTransport.js +8 -1
- package/dist/transport/RegisterTransport.js.map +1 -1
- package/dist/transport/TransportMessage.d.ts +1 -1
- package/dist/transport/TransportMessage.js +1 -1
- package/dist/transport/TransportMessage.js.map +1 -1
- package/dist/types/config.d.ts +7 -0
- package/dist/types/csp.d.ts +34 -0
- package/dist/types/csp.js +12 -0
- package/dist/types/csp.js.map +1 -0
- package/dist/types/entrypoint.d.ts +2 -1
- package/dist/types/entrypoint.js +1 -0
- package/dist/types/entrypoint.js.map +1 -1
- package/dist/types/manifest.d.ts +10 -0
- package/dist/types/manifest.js.map +1 -1
- package/dist/types/offscreen.d.ts +2 -1
- package/dist/types/offscreen.js.map +1 -1
- package/dist/types/page.d.ts +2 -1
- package/dist/types/plugin.d.ts +2 -1
- package/dist/types/popup.d.ts +2 -1
- package/dist/types/sandbox.d.ts +97 -0
- package/dist/types/sandbox.js +34 -0
- package/dist/types/sandbox.js.map +1 -0
- package/dist/types/sidebar.d.ts +2 -1
- package/dist/types/sidebar.js.map +1 -1
- package/dist/types/transport.d.ts +6 -2
- package/package.json +7 -1
- package/dist/cli/plugins/style.d.ts +0 -2
- package/dist/cli/plugins/style.js.map +0 -1
|
@@ -87,6 +87,73 @@ class ManifestV3_default extends ManifestBase {
|
|
|
87
87
|
return { web_accessible_resources: transformedResources };
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
|
+
buildSandbox() {
|
|
91
|
+
if (this.browser === Browser.Firefox) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const rawSandbox = this.combinedRaws.sandbox || {};
|
|
95
|
+
const sandboxes = this.getSandboxes();
|
|
96
|
+
if (sandboxes.length === 0 && Object.keys(rawSandbox).length === 0) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
sandbox: {
|
|
101
|
+
...rawSandbox,
|
|
102
|
+
pages: sandboxes
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
buildCsp() {
|
|
107
|
+
const rawCsp = this.combinedRaws.content_security_policy;
|
|
108
|
+
const csp = this.csp.build();
|
|
109
|
+
const sandboxCsp = this.sandboxCsp.build();
|
|
110
|
+
if (this.browser === Browser.Firefox) {
|
|
111
|
+
if (!rawCsp && !csp) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (typeof rawCsp === "string") {
|
|
115
|
+
if (csp) {
|
|
116
|
+
throw new ManifestError(
|
|
117
|
+
"Cannot merge extension pages content security policy with a string content_security_policy."
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
return { content_security_policy: rawCsp };
|
|
121
|
+
}
|
|
122
|
+
const { sandbox, ...contentCsp } = rawCsp || {};
|
|
123
|
+
if (csp && contentCsp.extension_pages) {
|
|
124
|
+
throw new ManifestError(
|
|
125
|
+
"Cannot merge extension pages content security policy with raw content_security_policy.extension_pages."
|
|
126
|
+
);
|
|
127
|
+
}
|
|
128
|
+
if (csp) {
|
|
129
|
+
contentCsp.extension_pages = csp;
|
|
130
|
+
}
|
|
131
|
+
return Object.keys(contentCsp).length > 0 ? { content_security_policy: contentCsp } : void 0;
|
|
132
|
+
}
|
|
133
|
+
if (!rawCsp && !sandboxCsp && !csp) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (typeof rawCsp === "string") {
|
|
137
|
+
if (sandboxCsp || csp) {
|
|
138
|
+
throw new ManifestError(
|
|
139
|
+
"Cannot merge framework content security policy with a string content_security_policy."
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
return { content_security_policy: rawCsp };
|
|
143
|
+
}
|
|
144
|
+
if (csp && (rawCsp == null ? void 0 : rawCsp.extension_pages)) {
|
|
145
|
+
throw new ManifestError(
|
|
146
|
+
"Cannot merge extension pages content security policy with raw content_security_policy.extension_pages."
|
|
147
|
+
);
|
|
148
|
+
}
|
|
149
|
+
return {
|
|
150
|
+
content_security_policy: {
|
|
151
|
+
...rawCsp,
|
|
152
|
+
...csp ? { extension_pages: csp } : {},
|
|
153
|
+
...sandboxCsp || (rawCsp == null ? void 0 : rawCsp.sandbox) ? { sandbox: sandboxCsp || (rawCsp == null ? void 0 : rawCsp.sandbox) } : {}
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
}
|
|
90
157
|
}
|
|
91
158
|
export {
|
|
92
159
|
ManifestV3_default as default
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/cli/builders/manifest/ManifestV3.ts"],"sourcesContent":["import ManifestBase, {ManifestError} from \"./ManifestBase\";\n\nimport {filterHostPatterns, filterOptionalPermissions, filterPermissionsForMV3} from \"./utils\";\n\nimport {CoreManifest, ManifestAccessibleResource, ManifestVersion} from \"@typing/manifest\";\nimport {Browser} from \"@typing/browser\";\n\ntype ManifestV3 = chrome.runtime.ManifestV3;\n\nexport default class extends ManifestBase<ManifestV3> {\n public constructor(browser: Browser) {\n super(browser);\n }\n\n public getManifestVersion(): ManifestVersion {\n return 3;\n }\n\n protected buildBackground(): Partial<CoreManifest> | undefined {\n if (this.browser === Browser.Firefox) {\n const manifest = super.buildBackground();\n\n if (manifest) {\n const {background, ...other} = manifest;\n\n return {...other, background: {...background, persistent: undefined}};\n }\n\n return;\n }\n\n if (this.background) {\n const {entry} = this.background;\n\n const dependencies = this.dependencies.get(entry);\n\n if (!dependencies) {\n throw new ManifestError(`Background entry \"${entry}\" not found in dependencies`);\n }\n\n if (dependencies.js.size === 0) {\n throw new ManifestError(`Background entry \"${entry}\" has no dependencies`);\n }\n\n if (dependencies.js.size > 1) {\n throw new ManifestError(`Background entry \"${entry}\" has more than one dependency`);\n }\n\n const [js] = Array.from(dependencies.js);\n\n return {background: {service_worker: js}};\n }\n }\n\n protected buildAction(): Partial<ManifestV3> | undefined {\n if (this.popup) {\n const {path, icon, title} = this.popup;\n\n return {\n action: {\n default_title: title || this.name,\n default_popup: path,\n default_icon: this.getIconsByName(icon),\n },\n };\n } else if (this.hasExecuteActionCommand()) {\n return {\n action: {\n default_title: this.name,\n },\n };\n }\n }\n\n protected buildPermissions(): Partial<ManifestV3> | undefined {\n const permissions = Array.from(filterPermissionsForMV3(this.combinedPermissions));\n\n if (permissions.length > 0) {\n return {permissions};\n }\n }\n\n protected buildOptionalPermissions(): Partial<ManifestV3> | undefined {\n const optionalPermissions = filterOptionalPermissions(\n filterPermissionsForMV3(this.combinedOptionalPermissions),\n filterPermissionsForMV3(this.combinedPermissions)\n );\n\n if (optionalPermissions.length > 0) {\n return {optional_permissions: optionalPermissions};\n }\n }\n\n protected buildHostPermissions(): Partial<ManifestV3> | undefined {\n if (this.combinedHostPermissions.size > 0) {\n return {host_permissions: [...filterHostPatterns(this.combinedHostPermissions)]};\n }\n }\n\n protected buildOptionalHostPermissions(): Partial<ManifestV3> | undefined {\n // prettier-ignore\n const optionalHostPermissions = Array\n .from(filterHostPatterns(new Set([...this.combinedHostPermissions, ...this.combinedOptionalHostPermissions])))\n .filter((permission) => !this.combinedHostPermissions.has(permission));\n\n if (optionalHostPermissions.length > 0) {\n return {optional_host_permissions: optionalHostPermissions};\n }\n }\n\n protected buildWebAccessibleResources(): Partial<ManifestV3> | undefined {\n const resources: ManifestAccessibleResource[] = this.getWebAccessibleResources();\n\n const transformedResources = resources.map(resource => ({\n resources: resource.resources,\n matches: resource.matches || [],\n }));\n\n if (resources.length > 0) {\n return {web_accessible_resources: transformedResources};\n }\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/builders/manifest/ManifestV3.ts"],"sourcesContent":["import ManifestBase, {ManifestError} from \"./ManifestBase\";\n\nimport {filterHostPatterns, filterOptionalPermissions, filterPermissionsForMV3} from \"./utils\";\n\nimport {CoreManifest, ManifestAccessibleResource, ManifestVersion} from \"@typing/manifest\";\nimport {Browser} from \"@typing/browser\";\n\ntype ManifestV3 = chrome.runtime.ManifestV3;\n\nexport default class extends ManifestBase<ManifestV3> {\n public constructor(browser: Browser) {\n super(browser);\n }\n\n public getManifestVersion(): ManifestVersion {\n return 3;\n }\n\n protected buildBackground(): Partial<CoreManifest> | undefined {\n if (this.browser === Browser.Firefox) {\n const manifest = super.buildBackground();\n\n if (manifest) {\n const {background, ...other} = manifest;\n\n return {...other, background: {...background, persistent: undefined}};\n }\n\n return;\n }\n\n if (this.background) {\n const {entry} = this.background;\n\n const dependencies = this.dependencies.get(entry);\n\n if (!dependencies) {\n throw new ManifestError(`Background entry \"${entry}\" not found in dependencies`);\n }\n\n if (dependencies.js.size === 0) {\n throw new ManifestError(`Background entry \"${entry}\" has no dependencies`);\n }\n\n if (dependencies.js.size > 1) {\n throw new ManifestError(`Background entry \"${entry}\" has more than one dependency`);\n }\n\n const [js] = Array.from(dependencies.js);\n\n return {background: {service_worker: js}};\n }\n }\n\n protected buildAction(): Partial<ManifestV3> | undefined {\n if (this.popup) {\n const {path, icon, title} = this.popup;\n\n return {\n action: {\n default_title: title || this.name,\n default_popup: path,\n default_icon: this.getIconsByName(icon),\n },\n };\n } else if (this.hasExecuteActionCommand()) {\n return {\n action: {\n default_title: this.name,\n },\n };\n }\n }\n\n protected buildPermissions(): Partial<ManifestV3> | undefined {\n const permissions = Array.from(filterPermissionsForMV3(this.combinedPermissions));\n\n if (permissions.length > 0) {\n return {permissions};\n }\n }\n\n protected buildOptionalPermissions(): Partial<ManifestV3> | undefined {\n const optionalPermissions = filterOptionalPermissions(\n filterPermissionsForMV3(this.combinedOptionalPermissions),\n filterPermissionsForMV3(this.combinedPermissions)\n );\n\n if (optionalPermissions.length > 0) {\n return {optional_permissions: optionalPermissions};\n }\n }\n\n protected buildHostPermissions(): Partial<ManifestV3> | undefined {\n if (this.combinedHostPermissions.size > 0) {\n return {host_permissions: [...filterHostPatterns(this.combinedHostPermissions)]};\n }\n }\n\n protected buildOptionalHostPermissions(): Partial<ManifestV3> | undefined {\n // prettier-ignore\n const optionalHostPermissions = Array\n .from(filterHostPatterns(new Set([...this.combinedHostPermissions, ...this.combinedOptionalHostPermissions])))\n .filter((permission) => !this.combinedHostPermissions.has(permission));\n\n if (optionalHostPermissions.length > 0) {\n return {optional_host_permissions: optionalHostPermissions};\n }\n }\n\n protected buildWebAccessibleResources(): Partial<ManifestV3> | undefined {\n const resources: ManifestAccessibleResource[] = this.getWebAccessibleResources();\n\n const transformedResources = resources.map(resource => ({\n resources: resource.resources,\n matches: resource.matches || [],\n }));\n\n if (resources.length > 0) {\n return {web_accessible_resources: transformedResources};\n }\n }\n\n protected buildSandbox(): Partial<ManifestV3> | undefined {\n if (this.browser === Browser.Firefox) {\n return;\n }\n\n const rawSandbox = (this.combinedRaws.sandbox || {}) as Record<string, any>;\n const sandboxes = this.getSandboxes();\n\n if (sandboxes.length === 0 && Object.keys(rawSandbox).length === 0) {\n return;\n }\n\n return {\n sandbox: {\n ...rawSandbox,\n pages: sandboxes,\n },\n } as Partial<ManifestV3>;\n }\n\n protected buildCsp(): Partial<ManifestV3> | undefined {\n const rawCsp = this.combinedRaws.content_security_policy;\n const csp = this.csp.build();\n const sandboxCsp = this.sandboxCsp.build();\n\n if (this.browser === Browser.Firefox) {\n if (!rawCsp && !csp) {\n return;\n }\n\n if (typeof rawCsp === \"string\") {\n if (csp) {\n throw new ManifestError(\n \"Cannot merge extension pages content security policy with a string content_security_policy.\"\n );\n }\n\n return {content_security_policy: rawCsp} as Partial<ManifestV3>;\n }\n\n const {sandbox, ...contentCsp} = rawCsp || {};\n\n if (csp && contentCsp.extension_pages) {\n throw new ManifestError(\n \"Cannot merge extension pages content security policy with raw content_security_policy.extension_pages.\"\n );\n }\n\n if (csp) {\n contentCsp.extension_pages = csp;\n }\n\n return Object.keys(contentCsp).length > 0\n ? ({content_security_policy: contentCsp} as Partial<ManifestV3>)\n : undefined;\n }\n\n if (!rawCsp && !sandboxCsp && !csp) {\n return;\n }\n\n if (typeof rawCsp === \"string\") {\n if (sandboxCsp || csp) {\n throw new ManifestError(\n \"Cannot merge framework content security policy with a string content_security_policy.\"\n );\n }\n\n return {content_security_policy: rawCsp} as Partial<ManifestV3>;\n }\n\n if (csp && rawCsp?.extension_pages) {\n throw new ManifestError(\n \"Cannot merge extension pages content security policy with raw content_security_policy.extension_pages.\"\n );\n }\n\n return {\n content_security_policy: {\n ...rawCsp,\n ...(csp ? {extension_pages: csp} : {}),\n ...(sandboxCsp || rawCsp?.sandbox ? {sandbox: sandboxCsp || rawCsp?.sandbox} : {}),\n },\n } as Partial<ManifestV3>;\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -3,6 +3,8 @@ import { Browser } from "./../../../../types/browser.js";
|
|
|
3
3
|
import { RelayMethod } from "./../../../../types/relay.js";
|
|
4
4
|
import { ContentScriptAppend, ContentScriptDeclarative, ContentScriptMarker } from "./../../../../types/content.js";
|
|
5
5
|
import { OffscreenReason } from "./../../../../types/offscreen.js";
|
|
6
|
+
import { SandboxAllow, SandboxSource } from "./../../../../types/sandbox.js";
|
|
7
|
+
import { CspSource } from "./../../../../types/csp.js";
|
|
6
8
|
var core_default = () => {
|
|
7
9
|
const resolvers = [];
|
|
8
10
|
Object.entries(Browser).forEach(([key, value]) => {
|
|
@@ -53,6 +55,14 @@ var core_default = () => {
|
|
|
53
55
|
value
|
|
54
56
|
});
|
|
55
57
|
});
|
|
58
|
+
Object.entries(CspSource).forEach(([key, value]) => {
|
|
59
|
+
resolvers.push({
|
|
60
|
+
from: PackageName,
|
|
61
|
+
target: "CspSource",
|
|
62
|
+
name: key,
|
|
63
|
+
value
|
|
64
|
+
});
|
|
65
|
+
});
|
|
56
66
|
Object.entries(RelayMethod).forEach(([key, value]) => {
|
|
57
67
|
resolvers.push({
|
|
58
68
|
from: PackageName,
|
|
@@ -69,6 +79,22 @@ var core_default = () => {
|
|
|
69
79
|
value
|
|
70
80
|
});
|
|
71
81
|
});
|
|
82
|
+
Object.entries(SandboxAllow).forEach(([key, value]) => {
|
|
83
|
+
resolvers.push({
|
|
84
|
+
from: PackageName,
|
|
85
|
+
target: "SandboxAllow",
|
|
86
|
+
name: key,
|
|
87
|
+
value
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
Object.entries(SandboxSource).forEach(([key, value]) => {
|
|
91
|
+
resolvers.push({
|
|
92
|
+
from: PackageName,
|
|
93
|
+
target: "SandboxSource",
|
|
94
|
+
name: key,
|
|
95
|
+
value
|
|
96
|
+
});
|
|
97
|
+
});
|
|
72
98
|
return resolvers;
|
|
73
99
|
};
|
|
74
100
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/cli/entrypoint/file/injectors/core.ts"],"sourcesContent":["import {Command, Mode, PackageName} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\nimport {RelayMethod} from \"@typing/relay\";\nimport {ContentScriptAppend, ContentScriptDeclarative, ContentScriptMarker} from \"@typing/content\";\nimport {OffscreenReason} from \"@typing/offscreen\";\n\nimport {Injector} from \"../types\";\n\nexport default (): Injector[] => {\n const resolvers: Injector[] = [];\n\n Object.entries(Browser).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"Browser\",\n name: key,\n value,\n });\n });\n\n Object.entries(Mode).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"Mode\",\n name: key,\n value,\n });\n });\n\n Object.entries(Command).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"Command\",\n name: key,\n value,\n });\n });\n\n Object.entries(ContentScriptDeclarative).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"ContentScriptDeclarative\",\n name: key,\n value,\n });\n });\n\n Object.entries(ContentScriptAppend).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"ContentScriptAppend\",\n name: key,\n value,\n });\n });\n\n Object.entries(ContentScriptMarker).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"ContentScriptMarker\",\n name: key,\n value,\n });\n });\n\n Object.entries(RelayMethod).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"RelayMethod\",\n name: key,\n value,\n });\n });\n\n Object.entries(OffscreenReason).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"OffscreenReason\",\n name: key,\n value,\n });\n });\n\n return resolvers;\n};\n"],"mappings":"AAAA,SAAQ,SAAS,MAAM,mBAAkB;AACzC,SAAQ,eAAc;AACtB,SAAQ,mBAAkB;AAC1B,SAAQ,qBAAqB,0BAA0B,2BAA0B;AACjF,SAAQ,uBAAsB;
|
|
1
|
+
{"version":3,"sources":["../../../../../src/cli/entrypoint/file/injectors/core.ts"],"sourcesContent":["import {Command, Mode, PackageName} from \"@typing/app\";\nimport {Browser} from \"@typing/browser\";\nimport {RelayMethod} from \"@typing/relay\";\nimport {ContentScriptAppend, ContentScriptDeclarative, ContentScriptMarker} from \"@typing/content\";\nimport {OffscreenReason} from \"@typing/offscreen\";\nimport {SandboxAllow, SandboxSource} from \"@typing/sandbox\";\nimport {CspSource} from \"@typing/csp\";\n\nimport {Injector} from \"../types\";\n\nexport default (): Injector[] => {\n const resolvers: Injector[] = [];\n\n Object.entries(Browser).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"Browser\",\n name: key,\n value,\n });\n });\n\n Object.entries(Mode).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"Mode\",\n name: key,\n value,\n });\n });\n\n Object.entries(Command).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"Command\",\n name: key,\n value,\n });\n });\n\n Object.entries(ContentScriptDeclarative).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"ContentScriptDeclarative\",\n name: key,\n value,\n });\n });\n\n Object.entries(ContentScriptAppend).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"ContentScriptAppend\",\n name: key,\n value,\n });\n });\n\n Object.entries(ContentScriptMarker).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"ContentScriptMarker\",\n name: key,\n value,\n });\n });\n\n Object.entries(CspSource).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"CspSource\",\n name: key,\n value,\n });\n });\n\n Object.entries(RelayMethod).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"RelayMethod\",\n name: key,\n value,\n });\n });\n\n Object.entries(OffscreenReason).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"OffscreenReason\",\n name: key,\n value,\n });\n });\n\n Object.entries(SandboxAllow).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"SandboxAllow\",\n name: key,\n value,\n });\n });\n\n Object.entries(SandboxSource).forEach(([key, value]) => {\n resolvers.push({\n from: PackageName,\n target: \"SandboxSource\",\n name: key,\n value,\n });\n });\n\n return resolvers;\n};\n"],"mappings":"AAAA,SAAQ,SAAS,MAAM,mBAAkB;AACzC,SAAQ,eAAc;AACtB,SAAQ,mBAAkB;AAC1B,SAAQ,qBAAqB,0BAA0B,2BAA0B;AACjF,SAAQ,uBAAsB;AAC9B,SAAQ,cAAc,qBAAoB;AAC1C,SAAQ,iBAAgB;AAIxB,IAAO,eAAQ,MAAkB;AAC7B,QAAM,YAAwB,CAAC;AAE/B,SAAO,QAAQ,OAAO,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC9C,cAAU,KAAK;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAED,SAAO,QAAQ,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC3C,cAAU,KAAK;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAED,SAAO,QAAQ,OAAO,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC9C,cAAU,KAAK;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAED,SAAO,QAAQ,wBAAwB,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC/D,cAAU,KAAK;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAED,SAAO,QAAQ,mBAAmB,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC1D,cAAU,KAAK;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAED,SAAO,QAAQ,mBAAmB,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC1D,cAAU,KAAK;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAED,SAAO,QAAQ,SAAS,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAChD,cAAU,KAAK;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAED,SAAO,QAAQ,WAAW,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAClD,cAAU,KAAK;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAED,SAAO,QAAQ,eAAe,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACtD,cAAU,KAAK;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAED,SAAO,QAAQ,YAAY,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACnD,cAAU,KAAK;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAED,SAAO,QAAQ,aAAa,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACpD,cAAU,KAAK;AAAA,MACX,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN;AAAA,IACJ,CAAC;AAAA,EACL,CAAC;AAED,SAAO;AACX;","names":[]}
|
|
@@ -61,6 +61,10 @@ export default class TypeResolver {
|
|
|
61
61
|
* Extracts a textual property name.
|
|
62
62
|
*/
|
|
63
63
|
private getName;
|
|
64
|
+
/**
|
|
65
|
+
* Normalizes raw TypeScript source text before it enters generated declarations.
|
|
66
|
+
*/
|
|
67
|
+
private normalizeSourceTypeText;
|
|
64
68
|
/**
|
|
65
69
|
* Extracts properties from an interface declaration
|
|
66
70
|
*/
|
|
@@ -30,7 +30,7 @@ class TypeResolver {
|
|
|
30
30
|
if (ts.isTypeReferenceNode(typeNode)) {
|
|
31
31
|
return this.resolveTypeReference(typeNode);
|
|
32
32
|
}
|
|
33
|
-
return typeNode.getText();
|
|
33
|
+
return this.normalizeSourceTypeText(typeNode.getText());
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
36
|
* Resolves a union type node to a string.
|
|
@@ -259,6 +259,12 @@ class TypeResolver {
|
|
|
259
259
|
}
|
|
260
260
|
return name.getText();
|
|
261
261
|
}
|
|
262
|
+
/**
|
|
263
|
+
* Normalizes raw TypeScript source text before it enters generated declarations.
|
|
264
|
+
*/
|
|
265
|
+
normalizeSourceTypeText(text) {
|
|
266
|
+
return text.replace(/\s+/g, " ").trim();
|
|
267
|
+
}
|
|
262
268
|
/**
|
|
263
269
|
* Extracts properties from an interface declaration
|
|
264
270
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/cli/entrypoint/file/parsers/TypeResolver.ts"],"sourcesContent":["import ts from \"typescript\";\nimport fs from \"fs\";\nimport SourceFile from \"../SourceFile\";\nimport NodeFinder from \"./NodeFinder\";\n\n/**\n * Resolves TypeScript type nodes to string representations.\n */\nexport default class TypeResolver {\n /**\n * Constructor for the TypeResolver.\n *\n * @param sourceFile The source file to resolve types from\n * @param nodeFinder Optional NodeFinder instance to use for finding nodes\n */\n constructor(\n private readonly sourceFile: SourceFile,\n private readonly nodeFinder?: NodeFinder\n ) {}\n\n /**\n * Resolves a TypeScript type node to a string, inlining type aliases when possible.\n *\n * @param typeNode The type node to resolve\n * @returns The resolved type as a string\n */\n public resolveTypeNode(typeNode: ts.TypeNode): string {\n // Handle union types (like Tab | undefined)\n if (ts.isUnionTypeNode(typeNode)) {\n return this.resolveUnionType(typeNode);\n }\n\n // Handle array types (like Tab[])\n if (ts.isArrayTypeNode(typeNode)) {\n return this.resolveArrayType(typeNode);\n }\n\n // inline type aliases\n if (ts.isTypeReferenceNode(typeNode)) {\n return this.resolveTypeReference(typeNode);\n }\n\n // fallback: use textual representation\n return typeNode.getText();\n }\n\n /**\n * Resolves a union type node to a string.\n *\n * @param typeNode The union type node to resolve\n * @returns The resolved union type as a string\n */\n public resolveUnionType(typeNode: ts.UnionTypeNode): string {\n const types = typeNode.types.map(t => this.resolveTypeNode(t));\n return types.join(\" | \");\n }\n\n /**\n * Resolves an array type node to a string.\n *\n * @param typeNode The array type node to resolve\n * @returns The resolved array type as a string\n */\n public resolveArrayType(typeNode: ts.ArrayTypeNode): string {\n const elementType = this.resolveTypeNode(typeNode.elementType);\n return `${elementType}[]`;\n }\n\n /**\n * Resolves a type reference node to a string, inlining type aliases when possible.\n *\n * @param typeNode The type reference node to resolve\n * @returns The resolved type reference as a string\n */\n public resolveTypeReference(typeNode: ts.TypeReferenceNode): string {\n const name = typeNode.typeName.getText();\n\n // Try to inline the type alias\n const inlined = this.inlineAliasType(name);\n if (inlined) {\n return inlined;\n }\n\n // Check if the type is imported\n const importPath = this.sourceFile.getImports().get(name);\n if (importPath) {\n try {\n // Check if the file exists before creating a parser\n if (!fs.existsSync(importPath)) {\n console.warn(`File not found: ${importPath} when resolving type reference ${name}`);\n return typeNode.getText();\n }\n\n const parser = (this.sourceFile.constructor as typeof SourceFile).make(importPath);\n const typeResolver = new TypeResolver(parser);\n const nodeFinder = new NodeFinder(parser);\n\n // Check for interface declaration\n const interfaceDecl = nodeFinder.findInterfaceDeclaration(name);\n if (interfaceDecl) {\n const props = typeResolver.extractInterfaceProperties(interfaceDecl);\n return props.length ? `{${props.join(\"; \")};}` : `{}`;\n }\n\n // Check for type alias declaration\n const aliasDecl = nodeFinder.findTypeAliasDeclaration(name);\n if (aliasDecl) {\n // Handle intersection types specially\n if (ts.isIntersectionTypeNode(aliasDecl.type)) {\n return typeResolver.processIntersectionType(aliasDecl.type);\n }\n return typeResolver.resolveTypeNode(aliasDecl.type);\n }\n } catch (error) {\n console.warn(`Error resolving type reference ${name} from ${importPath}:`, error);\n }\n }\n\n // If there are type arguments, resolve them\n if (typeNode.typeArguments && typeNode.typeArguments.length > 0) {\n const aliasName = typeNode.typeName.getText();\n // Resolve each type argument\n const resolvedArgs = typeNode.typeArguments.map(arg => this.resolveTypeNode(arg));\n // Construct the type with resolved arguments\n return `${aliasName}<${resolvedArgs.join(\", \")}>`;\n }\n\n // preserve generics and other references\n return typeNode.getText();\n }\n\n /**\n * Attempts to inline a type alias.\n *\n * @param name The name of the type alias\n * @returns The inlined type alias or undefined if it cannot be inlined\n */\n public inlineAliasType(name: string): string | undefined {\n // Check if the type is imported from an external library\n const importPath = this.sourceFile.getImports().get(name);\n\n // Special case for chrome.* namespaces\n if (importPath && (importPath.startsWith(\"chrome.\") || importPath.startsWith(\"browser.\"))) {\n return importPath;\n }\n\n if (importPath && !importPath.startsWith(\".\") && !importPath.startsWith(\"/\") && !fs.existsSync(importPath)) {\n // This is an external library import, format it as import('libraryName').TypeName\n return `import('${importPath}').${name}`;\n }\n\n // Check for import equals declaration (import X = Y.Z)\n const nodeFinder = this.nodeFinder || new NodeFinder(this.sourceFile);\n const importEquals = nodeFinder.findImportEqualsDeclaration(name);\n if (importEquals && importEquals.moduleReference) {\n // For qualified names like chrome.tabs.Tab, return the qualified name\n if (ts.isQualifiedName(importEquals.moduleReference)) {\n return importEquals.moduleReference.getText();\n }\n // For external module references like 'somelib', handle as external library\n else if (\n ts.isExternalModuleReference(importEquals.moduleReference) &&\n importEquals.moduleReference.expression &&\n ts.isStringLiteral(importEquals.moduleReference.expression)\n ) {\n const libPath = importEquals.moduleReference.expression.text;\n return `import('${libPath}').${name}`;\n }\n // For other module references, return the text representation\n else {\n return importEquals.moduleReference.getText();\n }\n }\n\n // Find the type alias declaration\n const aliasDecl = this.findTypeAliasDeclaration(name);\n if (aliasDecl) {\n const typeNode = aliasDecl.type;\n\n // handle intersection type alias by flattening members\n if (ts.isIntersectionTypeNode(typeNode)) {\n return this.processIntersectionType(typeNode);\n }\n\n // For type reference nodes (like aliases to other types), preserve the original type\n if (ts.isTypeReferenceNode(typeNode) && ts.isIdentifier(typeNode.typeName)) {\n // Get the full text of the type node, which includes any namespace qualifiers\n return typeNode.getText();\n }\n\n return this.resolveTypeNode(typeNode);\n }\n\n // local interface\n const localInterface = nodeFinder.findInterfaceDeclaration(name);\n if (localInterface) {\n const props = this.extractInterfaceProperties(localInterface);\n return props.length ? `{${props.join(\"; \")};}` : `{}`;\n }\n\n // Handle imported types\n if (importPath) {\n try {\n // Check if the file exists before creating a parser\n if (!fs.existsSync(importPath)) {\n console.warn(`File not found: ${importPath} when resolving type alias ${name}`);\n return undefined;\n }\n\n const parser = (this.sourceFile.constructor as typeof SourceFile).make(importPath);\n const typeResolver = new TypeResolver(parser);\n\n // imported type alias\n const aliasDecl = nodeFinder.findTypeAliasDeclaration(name);\n if (aliasDecl) {\n // inline imported type alias (including intersections)\n return typeResolver.inlineAliasType(name);\n }\n\n // imported interface\n const interfaceDecl = nodeFinder.findInterfaceDeclaration(name);\n if (interfaceDecl) {\n const props = this.extractInterfaceProperties(interfaceDecl);\n return props.length ? `{${props.join(\"; \")};}` : `{}`;\n }\n } catch (error) {\n console.warn(`Error resolving type alias ${name} from ${importPath}:`, error);\n return undefined;\n }\n }\n\n return undefined;\n }\n\n /**\n * Processes an intersection type node by flattening its members\n */\n private processIntersectionType(typeNode: ts.IntersectionTypeNode): string {\n const parts: string[] = [];\n const seen = new Set<string>();\n\n for (const t of typeNode.types) {\n // inline object literal types\n if (ts.isTypeLiteralNode(t)) {\n for (const m of t.members) {\n let keyName: string;\n let entry: string;\n if (ts.isPropertySignature(m) && m.type) {\n keyName = this.getName(m.name!);\n const typeText = this.resolveTypeNode(m.type);\n // Remove spaces in object types to match expected format\n const formattedTypeText = typeText.replace(/\\{\\s+/g, \"{\").replace(/\\s+\\}/g, \"}\");\n entry = `${keyName}: ${formattedTypeText}`;\n } else if (ts.isMethodSignature(m) && m.name) {\n keyName = this.getName(m.name);\n const typeParams = m.typeParameters ? m.typeParameters.map(tp => tp.getText()) : [];\n const tpText = typeParams.length ? `<${typeParams.join(\",\")}>` : \"\";\n const paramsText = m.parameters\n .map(p => {\n const pname = ts.isIdentifier(p.name) ? p.name.text : p.name.getText();\n const ptype = p.type ? this.resolveTypeNode(p.type) : \"any\";\n // Remove spaces in object types to match expected format\n const formattedPType = ptype.replace(/\\{\\s+/g, \"{\").replace(/\\s+\\}/g, \"}\");\n return `${pname}: ${formattedPType}`;\n })\n .join(\",\");\n const returnType = m.type ? this.resolveTypeNode(m.type) : \"any\";\n // Remove spaces in object types to match expected format\n const formattedReturnType = returnType.replace(/\\{\\s+/g, \"{\").replace(/\\s+\\}/g, \"}\");\n entry = `${keyName}${tpText}(${paramsText}): ${formattedReturnType}`;\n } else if (ts.isIndexSignatureDeclaration(m) && m.type) {\n // Handle index signatures like [domain: string]: number;\n const paramName = m.parameters[0].name.getText();\n const paramType = m.parameters[0].type ? this.resolveTypeNode(m.parameters[0].type) : \"any\";\n const returnType = this.resolveTypeNode(m.type);\n // Use a special key for index signatures to avoid conflicts\n keyName = `[${paramName}:${paramType}]`;\n entry = `[${paramName}: ${paramType}]: ${returnType}`;\n } else {\n continue;\n }\n if (!seen.has(keyName)) {\n seen.add(keyName);\n parts.push(entry);\n }\n }\n }\n // inline referenced aliases or interfaces\n else if (ts.isTypeReferenceNode(t) && ts.isIdentifier(t.typeName)) {\n const refName = t.typeName.text;\n const sub = this.inlineAliasType(refName);\n if (sub) {\n this.extractSegmentsFromType(sub, seen, parts);\n }\n }\n }\n\n return `{${parts.join(\"; \")};}`;\n }\n\n /**\n * Extracts segments from a type string, handling nested braces\n */\n private extractSegmentsFromType(typeStr: string, seen: Set<string>, parts: string[]): void {\n const inner = typeStr.slice(1, -1).trim();\n if (!inner) return;\n\n // split on top-level semicolons (ignore semicolons within braces)\n const segments: string[] = [];\n let depth = 0;\n let buf = \"\";\n\n for (const ch of inner) {\n if (ch === \"{\") {\n depth++;\n buf += ch;\n } else if (ch === \"}\") {\n depth--;\n buf += ch;\n } else if (ch === \";\" && depth === 0) {\n const seg = buf.trim();\n if (seg) segments.push(seg);\n buf = \"\";\n } else {\n buf += ch;\n }\n }\n\n const last = buf.trim();\n if (last) segments.push(last);\n\n for (const s of segments) {\n const keyName = s.split(/[:(]/)[0];\n if (!seen.has(keyName)) {\n seen.add(keyName);\n parts.push(s);\n }\n }\n }\n\n /**\n * Extracts a textual property name.\n */\n private getName(name: ts.PropertyName | ts.BindingName | ts.Node): string {\n if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)) {\n return name.text;\n }\n\n return name.getText();\n }\n\n /**\n * Extracts properties from an interface declaration\n */\n public extractInterfaceProperties(interfaceDecl: ts.InterfaceDeclaration, parser: TypeResolver = this): string[] {\n const props: string[] = [];\n\n // include inherited members from extended interfaces\n if (interfaceDecl.heritageClauses) {\n for (const clause of interfaceDecl.heritageClauses) {\n if (clause.token === ts.SyntaxKind.ExtendsKeyword) {\n for (const typeNode of clause.types) {\n const expr = typeNode.expression;\n if (ts.isIdentifier(expr)) {\n const parent = parser.inlineAliasType(expr.text);\n if (parent) {\n const inner = parent.slice(1, -1).trim();\n if (inner) {\n props.push(\n ...inner\n .split(/;\\s*/)\n .map(s => s.trim())\n .filter(Boolean)\n );\n }\n }\n }\n }\n }\n }\n }\n\n // Add interface members\n for (const member of interfaceDecl.members) {\n if (ts.isPropertySignature(member) && member.type) {\n const key = parser.getName(member.name!);\n const optional = member.questionToken ? \"?\" : \"\";\n const typeText = parser.resolveTypeNode(member.type);\n props.push(`${key}${optional}: ${typeText}`);\n } else if (ts.isMethodSignature(member) && member.name) {\n const key = parser.getName(member.name);\n const typeParams = member.typeParameters ? member.typeParameters.map(tp => tp.getText()) : [];\n const tpText = typeParams.length ? `<${typeParams.join(\",\")}>` : \"\";\n\n const params = member.parameters\n .map(p => {\n const pname = ts.isIdentifier(p.name) ? p.name.text : p.name.getText();\n const ptype = p.type ? parser.resolveTypeNode(p.type) : \"any\";\n return `${pname}: ${ptype}`;\n })\n .join(\", \");\n\n const returnType = member.type ? parser.resolveTypeNode(member.type) : \"any\";\n\n props.push(`${key}${tpText}(${params}): ${returnType}`);\n } else if (ts.isIndexSignatureDeclaration(member) && member.type) {\n // Handle index signatures like [domain: string]: number;\n const paramName = member.parameters[0].name.getText();\n const paramType = member.parameters[0].type ? parser.resolveTypeNode(member.parameters[0].type) : \"any\";\n const returnType = parser.resolveTypeNode(member.type);\n props.push(`[${paramName}: ${paramType}]: ${returnType}`);\n }\n }\n\n return props;\n }\n\n /**\n * Searches the AST of this file for a type alias declaration by name.\n *\n * @param name The name of the type alias to find\n * @returns The type alias declaration or undefined if not found\n */\n private findTypeAliasDeclaration(name: string): ts.TypeAliasDeclaration | undefined {\n return this.findNodeByName<ts.TypeAliasDeclaration>(\n (node, searchName): node is ts.TypeAliasDeclaration =>\n ts.isTypeAliasDeclaration(node) && node.name.text === searchName,\n name\n );\n }\n\n /**\n * Generic method to find a node of a specific type by name in the AST.\n *\n * @param predicate The predicate to match the node\n * @param name The name to search for\n * @returns The found node or undefined if not found\n */\n private findNodeByName<T extends ts.Node>(\n predicate: (node: ts.Node, name: string) => node is T,\n name: string\n ): T | undefined {\n const sf = this.sourceFile.getSourceFile();\n let found: T | undefined;\n\n const visit = (node: ts.Node) => {\n if (predicate(node, name)) {\n found = node;\n } else {\n ts.forEachChild(node, visit);\n }\n };\n\n ts.forEachChild(sf, visit);\n return found;\n }\n}\n"],"mappings":"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","names":["aliasDecl"]}
|
|
1
|
+
{"version":3,"sources":["../../../../../src/cli/entrypoint/file/parsers/TypeResolver.ts"],"sourcesContent":["import ts from \"typescript\";\nimport fs from \"fs\";\nimport SourceFile from \"../SourceFile\";\nimport NodeFinder from \"./NodeFinder\";\n\n/**\n * Resolves TypeScript type nodes to string representations.\n */\nexport default class TypeResolver {\n /**\n * Constructor for the TypeResolver.\n *\n * @param sourceFile The source file to resolve types from\n * @param nodeFinder Optional NodeFinder instance to use for finding nodes\n */\n constructor(\n private readonly sourceFile: SourceFile,\n private readonly nodeFinder?: NodeFinder\n ) {}\n\n /**\n * Resolves a TypeScript type node to a string, inlining type aliases when possible.\n *\n * @param typeNode The type node to resolve\n * @returns The resolved type as a string\n */\n public resolveTypeNode(typeNode: ts.TypeNode): string {\n // Handle union types (like Tab | undefined)\n if (ts.isUnionTypeNode(typeNode)) {\n return this.resolveUnionType(typeNode);\n }\n\n // Handle array types (like Tab[])\n if (ts.isArrayTypeNode(typeNode)) {\n return this.resolveArrayType(typeNode);\n }\n\n // inline type aliases\n if (ts.isTypeReferenceNode(typeNode)) {\n return this.resolveTypeReference(typeNode);\n }\n\n // fallback: use textual representation\n return this.normalizeSourceTypeText(typeNode.getText());\n }\n\n /**\n * Resolves a union type node to a string.\n *\n * @param typeNode The union type node to resolve\n * @returns The resolved union type as a string\n */\n public resolveUnionType(typeNode: ts.UnionTypeNode): string {\n const types = typeNode.types.map(t => this.resolveTypeNode(t));\n return types.join(\" | \");\n }\n\n /**\n * Resolves an array type node to a string.\n *\n * @param typeNode The array type node to resolve\n * @returns The resolved array type as a string\n */\n public resolveArrayType(typeNode: ts.ArrayTypeNode): string {\n const elementType = this.resolveTypeNode(typeNode.elementType);\n return `${elementType}[]`;\n }\n\n /**\n * Resolves a type reference node to a string, inlining type aliases when possible.\n *\n * @param typeNode The type reference node to resolve\n * @returns The resolved type reference as a string\n */\n public resolveTypeReference(typeNode: ts.TypeReferenceNode): string {\n const name = typeNode.typeName.getText();\n\n // Try to inline the type alias\n const inlined = this.inlineAliasType(name);\n if (inlined) {\n return inlined;\n }\n\n // Check if the type is imported\n const importPath = this.sourceFile.getImports().get(name);\n if (importPath) {\n try {\n // Check if the file exists before creating a parser\n if (!fs.existsSync(importPath)) {\n console.warn(`File not found: ${importPath} when resolving type reference ${name}`);\n return typeNode.getText();\n }\n\n const parser = (this.sourceFile.constructor as typeof SourceFile).make(importPath);\n const typeResolver = new TypeResolver(parser);\n const nodeFinder = new NodeFinder(parser);\n\n // Check for interface declaration\n const interfaceDecl = nodeFinder.findInterfaceDeclaration(name);\n if (interfaceDecl) {\n const props = typeResolver.extractInterfaceProperties(interfaceDecl);\n return props.length ? `{${props.join(\"; \")};}` : `{}`;\n }\n\n // Check for type alias declaration\n const aliasDecl = nodeFinder.findTypeAliasDeclaration(name);\n if (aliasDecl) {\n // Handle intersection types specially\n if (ts.isIntersectionTypeNode(aliasDecl.type)) {\n return typeResolver.processIntersectionType(aliasDecl.type);\n }\n return typeResolver.resolveTypeNode(aliasDecl.type);\n }\n } catch (error) {\n console.warn(`Error resolving type reference ${name} from ${importPath}:`, error);\n }\n }\n\n // If there are type arguments, resolve them\n if (typeNode.typeArguments && typeNode.typeArguments.length > 0) {\n const aliasName = typeNode.typeName.getText();\n // Resolve each type argument\n const resolvedArgs = typeNode.typeArguments.map(arg => this.resolveTypeNode(arg));\n // Construct the type with resolved arguments\n return `${aliasName}<${resolvedArgs.join(\", \")}>`;\n }\n\n // preserve generics and other references\n return typeNode.getText();\n }\n\n /**\n * Attempts to inline a type alias.\n *\n * @param name The name of the type alias\n * @returns The inlined type alias or undefined if it cannot be inlined\n */\n public inlineAliasType(name: string): string | undefined {\n // Check if the type is imported from an external library\n const importPath = this.sourceFile.getImports().get(name);\n\n // Special case for chrome.* namespaces\n if (importPath && (importPath.startsWith(\"chrome.\") || importPath.startsWith(\"browser.\"))) {\n return importPath;\n }\n\n if (importPath && !importPath.startsWith(\".\") && !importPath.startsWith(\"/\") && !fs.existsSync(importPath)) {\n // This is an external library import, format it as import('libraryName').TypeName\n return `import('${importPath}').${name}`;\n }\n\n // Check for import equals declaration (import X = Y.Z)\n const nodeFinder = this.nodeFinder || new NodeFinder(this.sourceFile);\n const importEquals = nodeFinder.findImportEqualsDeclaration(name);\n if (importEquals && importEquals.moduleReference) {\n // For qualified names like chrome.tabs.Tab, return the qualified name\n if (ts.isQualifiedName(importEquals.moduleReference)) {\n return importEquals.moduleReference.getText();\n }\n // For external module references like 'somelib', handle as external library\n else if (\n ts.isExternalModuleReference(importEquals.moduleReference) &&\n importEquals.moduleReference.expression &&\n ts.isStringLiteral(importEquals.moduleReference.expression)\n ) {\n const libPath = importEquals.moduleReference.expression.text;\n return `import('${libPath}').${name}`;\n }\n // For other module references, return the text representation\n else {\n return importEquals.moduleReference.getText();\n }\n }\n\n // Find the type alias declaration\n const aliasDecl = this.findTypeAliasDeclaration(name);\n if (aliasDecl) {\n const typeNode = aliasDecl.type;\n\n // handle intersection type alias by flattening members\n if (ts.isIntersectionTypeNode(typeNode)) {\n return this.processIntersectionType(typeNode);\n }\n\n // For type reference nodes (like aliases to other types), preserve the original type\n if (ts.isTypeReferenceNode(typeNode) && ts.isIdentifier(typeNode.typeName)) {\n // Get the full text of the type node, which includes any namespace qualifiers\n return typeNode.getText();\n }\n\n return this.resolveTypeNode(typeNode);\n }\n\n // local interface\n const localInterface = nodeFinder.findInterfaceDeclaration(name);\n if (localInterface) {\n const props = this.extractInterfaceProperties(localInterface);\n return props.length ? `{${props.join(\"; \")};}` : `{}`;\n }\n\n // Handle imported types\n if (importPath) {\n try {\n // Check if the file exists before creating a parser\n if (!fs.existsSync(importPath)) {\n console.warn(`File not found: ${importPath} when resolving type alias ${name}`);\n return undefined;\n }\n\n const parser = (this.sourceFile.constructor as typeof SourceFile).make(importPath);\n const typeResolver = new TypeResolver(parser);\n\n // imported type alias\n const aliasDecl = nodeFinder.findTypeAliasDeclaration(name);\n if (aliasDecl) {\n // inline imported type alias (including intersections)\n return typeResolver.inlineAliasType(name);\n }\n\n // imported interface\n const interfaceDecl = nodeFinder.findInterfaceDeclaration(name);\n if (interfaceDecl) {\n const props = this.extractInterfaceProperties(interfaceDecl);\n return props.length ? `{${props.join(\"; \")};}` : `{}`;\n }\n } catch (error) {\n console.warn(`Error resolving type alias ${name} from ${importPath}:`, error);\n return undefined;\n }\n }\n\n return undefined;\n }\n\n /**\n * Processes an intersection type node by flattening its members\n */\n private processIntersectionType(typeNode: ts.IntersectionTypeNode): string {\n const parts: string[] = [];\n const seen = new Set<string>();\n\n for (const t of typeNode.types) {\n // inline object literal types\n if (ts.isTypeLiteralNode(t)) {\n for (const m of t.members) {\n let keyName: string;\n let entry: string;\n if (ts.isPropertySignature(m) && m.type) {\n keyName = this.getName(m.name!);\n const typeText = this.resolveTypeNode(m.type);\n // Remove spaces in object types to match expected format\n const formattedTypeText = typeText.replace(/\\{\\s+/g, \"{\").replace(/\\s+\\}/g, \"}\");\n entry = `${keyName}: ${formattedTypeText}`;\n } else if (ts.isMethodSignature(m) && m.name) {\n keyName = this.getName(m.name);\n const typeParams = m.typeParameters ? m.typeParameters.map(tp => tp.getText()) : [];\n const tpText = typeParams.length ? `<${typeParams.join(\",\")}>` : \"\";\n const paramsText = m.parameters\n .map(p => {\n const pname = ts.isIdentifier(p.name) ? p.name.text : p.name.getText();\n const ptype = p.type ? this.resolveTypeNode(p.type) : \"any\";\n // Remove spaces in object types to match expected format\n const formattedPType = ptype.replace(/\\{\\s+/g, \"{\").replace(/\\s+\\}/g, \"}\");\n return `${pname}: ${formattedPType}`;\n })\n .join(\",\");\n const returnType = m.type ? this.resolveTypeNode(m.type) : \"any\";\n // Remove spaces in object types to match expected format\n const formattedReturnType = returnType.replace(/\\{\\s+/g, \"{\").replace(/\\s+\\}/g, \"}\");\n entry = `${keyName}${tpText}(${paramsText}): ${formattedReturnType}`;\n } else if (ts.isIndexSignatureDeclaration(m) && m.type) {\n // Handle index signatures like [domain: string]: number;\n const paramName = m.parameters[0].name.getText();\n const paramType = m.parameters[0].type ? this.resolveTypeNode(m.parameters[0].type) : \"any\";\n const returnType = this.resolveTypeNode(m.type);\n // Use a special key for index signatures to avoid conflicts\n keyName = `[${paramName}:${paramType}]`;\n entry = `[${paramName}: ${paramType}]: ${returnType}`;\n } else {\n continue;\n }\n if (!seen.has(keyName)) {\n seen.add(keyName);\n parts.push(entry);\n }\n }\n }\n // inline referenced aliases or interfaces\n else if (ts.isTypeReferenceNode(t) && ts.isIdentifier(t.typeName)) {\n const refName = t.typeName.text;\n const sub = this.inlineAliasType(refName);\n if (sub) {\n this.extractSegmentsFromType(sub, seen, parts);\n }\n }\n }\n\n return `{${parts.join(\"; \")};}`;\n }\n\n /**\n * Extracts segments from a type string, handling nested braces\n */\n private extractSegmentsFromType(typeStr: string, seen: Set<string>, parts: string[]): void {\n const inner = typeStr.slice(1, -1).trim();\n if (!inner) return;\n\n // split on top-level semicolons (ignore semicolons within braces)\n const segments: string[] = [];\n let depth = 0;\n let buf = \"\";\n\n for (const ch of inner) {\n if (ch === \"{\") {\n depth++;\n buf += ch;\n } else if (ch === \"}\") {\n depth--;\n buf += ch;\n } else if (ch === \";\" && depth === 0) {\n const seg = buf.trim();\n if (seg) segments.push(seg);\n buf = \"\";\n } else {\n buf += ch;\n }\n }\n\n const last = buf.trim();\n if (last) segments.push(last);\n\n for (const s of segments) {\n const keyName = s.split(/[:(]/)[0];\n if (!seen.has(keyName)) {\n seen.add(keyName);\n parts.push(s);\n }\n }\n }\n\n /**\n * Extracts a textual property name.\n */\n private getName(name: ts.PropertyName | ts.BindingName | ts.Node): string {\n if (ts.isIdentifier(name) || ts.isStringLiteral(name) || ts.isNumericLiteral(name)) {\n return name.text;\n }\n\n return name.getText();\n }\n\n /**\n * Normalizes raw TypeScript source text before it enters generated declarations.\n */\n private normalizeSourceTypeText(text: string): string {\n return text.replace(/\\s+/g, \" \").trim();\n }\n\n /**\n * Extracts properties from an interface declaration\n */\n public extractInterfaceProperties(interfaceDecl: ts.InterfaceDeclaration, parser: TypeResolver = this): string[] {\n const props: string[] = [];\n\n // include inherited members from extended interfaces\n if (interfaceDecl.heritageClauses) {\n for (const clause of interfaceDecl.heritageClauses) {\n if (clause.token === ts.SyntaxKind.ExtendsKeyword) {\n for (const typeNode of clause.types) {\n const expr = typeNode.expression;\n if (ts.isIdentifier(expr)) {\n const parent = parser.inlineAliasType(expr.text);\n if (parent) {\n const inner = parent.slice(1, -1).trim();\n if (inner) {\n props.push(\n ...inner\n .split(/;\\s*/)\n .map(s => s.trim())\n .filter(Boolean)\n );\n }\n }\n }\n }\n }\n }\n }\n\n // Add interface members\n for (const member of interfaceDecl.members) {\n if (ts.isPropertySignature(member) && member.type) {\n const key = parser.getName(member.name!);\n const optional = member.questionToken ? \"?\" : \"\";\n const typeText = parser.resolveTypeNode(member.type);\n props.push(`${key}${optional}: ${typeText}`);\n } else if (ts.isMethodSignature(member) && member.name) {\n const key = parser.getName(member.name);\n const typeParams = member.typeParameters ? member.typeParameters.map(tp => tp.getText()) : [];\n const tpText = typeParams.length ? `<${typeParams.join(\",\")}>` : \"\";\n\n const params = member.parameters\n .map(p => {\n const pname = ts.isIdentifier(p.name) ? p.name.text : p.name.getText();\n const ptype = p.type ? parser.resolveTypeNode(p.type) : \"any\";\n return `${pname}: ${ptype}`;\n })\n .join(\", \");\n\n const returnType = member.type ? parser.resolveTypeNode(member.type) : \"any\";\n\n props.push(`${key}${tpText}(${params}): ${returnType}`);\n } else if (ts.isIndexSignatureDeclaration(member) && member.type) {\n // Handle index signatures like [domain: string]: number;\n const paramName = member.parameters[0].name.getText();\n const paramType = member.parameters[0].type ? parser.resolveTypeNode(member.parameters[0].type) : \"any\";\n const returnType = parser.resolveTypeNode(member.type);\n props.push(`[${paramName}: ${paramType}]: ${returnType}`);\n }\n }\n\n return props;\n }\n\n /**\n * Searches the AST of this file for a type alias declaration by name.\n *\n * @param name The name of the type alias to find\n * @returns The type alias declaration or undefined if not found\n */\n private findTypeAliasDeclaration(name: string): ts.TypeAliasDeclaration | undefined {\n return this.findNodeByName<ts.TypeAliasDeclaration>(\n (node, searchName): node is ts.TypeAliasDeclaration =>\n ts.isTypeAliasDeclaration(node) && node.name.text === searchName,\n name\n );\n }\n\n /**\n * Generic method to find a node of a specific type by name in the AST.\n *\n * @param predicate The predicate to match the node\n * @param name The name to search for\n * @returns The found node or undefined if not found\n */\n private findNodeByName<T extends ts.Node>(\n predicate: (node: ts.Node, name: string) => node is T,\n name: string\n ): T | undefined {\n const sf = this.sourceFile.getSourceFile();\n let found: T | undefined;\n\n const visit = (node: ts.Node) => {\n if (predicate(node, name)) {\n found = node;\n } else {\n ts.forEachChild(node, visit);\n }\n };\n\n ts.forEachChild(sf, visit);\n return found;\n }\n}\n"],"mappings":"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","names":["aliasDecl"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import { createRequire } from "module";
|
|
3
3
|
import TsResolver from "./TsResolver.js";
|
|
4
|
-
import { hasEntrypointPath, resolveEntrypointPath } from "./../../../../cli/entrypoint/index.js";
|
|
4
|
+
import { hasEntrypointPath, resolveEntrypointPath } from "./../../../../cli/entrypoint/utils/index.js";
|
|
5
5
|
import { PackageName } from "./../../../../types/app.js";
|
|
6
6
|
class ImportResolver_default {
|
|
7
7
|
constructor(ts = TsResolver.make()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/cli/entrypoint/file/resolvers/ImportResolver.ts"],"sourcesContent":["import path from \"path\";\nimport {createRequire} from \"module\";\n\nimport TsResolver from \"./TsResolver\";\n\nimport {hasEntrypointPath, resolveEntrypointPath} from \"@cli/entrypoint/
|
|
1
|
+
{"version":3,"sources":["../../../../../src/cli/entrypoint/file/resolvers/ImportResolver.ts"],"sourcesContent":["import path from \"path\";\nimport {createRequire} from \"module\";\n\nimport TsResolver from \"./TsResolver\";\n\nimport {hasEntrypointPath, resolveEntrypointPath} from \"@cli/entrypoint/utils\";\n\nimport {PackageName} from \"@typing/app\";\n\nexport default class {\n protected baseDir: string;\n\n constructor(protected ts: TsResolver = TsResolver.make()) {\n this.baseDir = process.cwd();\n }\n\n public setTs(ts: TsResolver): this {\n this.ts = ts;\n\n return this;\n }\n\n public setBaseDir(baseDir: string): this {\n this.baseDir = baseDir;\n\n return this;\n }\n\n public get(importPath: string): string {\n if (importPath.startsWith(\".\") || importPath.startsWith(\"/\")) {\n let resolvedLocal: string | undefined = path.resolve(this.baseDir, importPath);\n\n if (hasEntrypointPath(resolvedLocal)) {\n return resolvedLocal;\n }\n\n resolvedLocal = resolveEntrypointPath(resolvedLocal);\n\n if (resolvedLocal) {\n return resolvedLocal;\n }\n\n return importPath;\n }\n\n let aliased = this.ts.matchPath(importPath);\n\n if (aliased) {\n if (hasEntrypointPath(aliased)) {\n return path.resolve(aliased);\n }\n\n aliased = resolveEntrypointPath(aliased);\n\n if (aliased) {\n return path.resolve(aliased);\n }\n }\n\n try {\n if (importPath === PackageName || importPath.startsWith(`${PackageName}/`)) {\n return importPath;\n }\n\n return createRequire(import.meta.url).resolve(importPath, {paths: [this.baseDir]});\n } catch {\n return importPath;\n }\n }\n}\n"],"mappings":"AAAA,OAAO,UAAU;AACjB,SAAQ,qBAAoB;AAE5B,OAAO,gBAAgB;AAEvB,SAAQ,mBAAmB,6BAA4B;AAEvD,SAAQ,mBAAkB;AAE1B,MAAO,uBAAc;AAAA,EAGjB,YAAsB,KAAiB,WAAW,KAAK,GAAG;AAApC;AAClB,SAAK,UAAU,QAAQ,IAAI;AAAA,EAC/B;AAAA,EAFsB;AAAA,EAFZ;AAAA,EAMH,MAAM,IAAsB;AAC/B,SAAK,KAAK;AAEV,WAAO;AAAA,EACX;AAAA,EAEO,WAAW,SAAuB;AACrC,SAAK,UAAU;AAEf,WAAO;AAAA,EACX;AAAA,EAEO,IAAI,YAA4B;AACnC,QAAI,WAAW,WAAW,GAAG,KAAK,WAAW,WAAW,GAAG,GAAG;AAC1D,UAAI,gBAAoC,KAAK,QAAQ,KAAK,SAAS,UAAU;AAE7E,UAAI,kBAAkB,aAAa,GAAG;AAClC,eAAO;AAAA,MACX;AAEA,sBAAgB,sBAAsB,aAAa;AAEnD,UAAI,eAAe;AACf,eAAO;AAAA,MACX;AAEA,aAAO;AAAA,IACX;AAEA,QAAI,UAAU,KAAK,GAAG,UAAU,UAAU;AAE1C,QAAI,SAAS;AACT,UAAI,kBAAkB,OAAO,GAAG;AAC5B,eAAO,KAAK,QAAQ,OAAO;AAAA,MAC/B;AAEA,gBAAU,sBAAsB,OAAO;AAEvC,UAAI,SAAS;AACT,eAAO,KAAK,QAAQ,OAAO;AAAA,MAC/B;AAAA,IACJ;AAEA,QAAI;AACA,UAAI,eAAe,eAAe,WAAW,WAAW,GAAG,WAAW,GAAG,GAAG;AACxE,eAAO;AAAA,MACX;AAEA,aAAO,cAAc,YAAY,GAAG,EAAE,QAAQ,YAAY,EAAC,OAAO,CAAC,KAAK,OAAO,EAAC,CAAC;AAAA,IACrF,QAAQ;AACJ,aAAO;AAAA,IACX;AAAA,EACJ;AACJ;","names":[]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import
|
|
1
|
+
import ViewCspFinder from "./ViewCspFinder.js";
|
|
2
2
|
import AbstractTransportFinder from "./AbstractTransportFinder.js";
|
|
3
3
|
import { ReadonlyConfig } from "../../../types/config.js";
|
|
4
4
|
import { OffscreenEntrypointOptions } from "../../../types/offscreen.js";
|
|
5
5
|
import { EntrypointOptionsFinder, EntrypointParser, EntrypointType } from "../../../types/entrypoint.js";
|
|
6
|
-
export default class extends
|
|
6
|
+
export default class extends ViewCspFinder<OffscreenEntrypointOptions> {
|
|
7
7
|
protected readonly finder: AbstractTransportFinder<OffscreenEntrypointOptions>;
|
|
8
8
|
constructor(config: ReadonlyConfig, finder: AbstractTransportFinder<OffscreenEntrypointOptions>);
|
|
9
9
|
type(): EntrypointType;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import ViewCspFinder from "./ViewCspFinder.js";
|
|
2
2
|
import { EntrypointType } from "./../../../types/entrypoint.js";
|
|
3
|
-
class OffscreenViewFinder_default extends
|
|
3
|
+
class OffscreenViewFinder_default extends ViewCspFinder {
|
|
4
4
|
constructor(config, finder) {
|
|
5
5
|
super(config);
|
|
6
6
|
this.finder = finder;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/OffscreenViewFinder.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/OffscreenViewFinder.ts"],"sourcesContent":["import ViewCspFinder from \"./ViewCspFinder\";\nimport AbstractTransportFinder from \"./AbstractTransportFinder\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {OffscreenEntrypointOptions} from \"@typing/offscreen\";\nimport {EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends ViewCspFinder<OffscreenEntrypointOptions> {\n constructor(\n config: ReadonlyConfig,\n protected readonly finder: AbstractTransportFinder<OffscreenEntrypointOptions>\n ) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Offscreen;\n }\n\n protected getParser(): EntrypointParser<OffscreenEntrypointOptions> {\n return this.finder.parser();\n }\n\n protected getPlugin(): EntrypointOptionsFinder<OffscreenEntrypointOptions> {\n return this.finder.plugin();\n }\n\n public canMerge(): boolean {\n return this.config.mergeOffscreen;\n }\n}\n"],"mappings":"AAAA,OAAO,mBAAmB;AAK1B,SAAmD,sBAAqB;AAExE,MAAO,oCAAsB,cAA0C;AAAA,EACnE,YACI,QACmB,QACrB;AACE,UAAM,MAAM;AAFO;AAAA,EAGvB;AAAA,EAHuB;AAAA,EAKhB,OAAuB;AAC1B,WAAO,eAAe;AAAA,EAC1B;AAAA,EAEU,YAA0D;AAChE,WAAO,KAAK,OAAO,OAAO;AAAA,EAC9B;AAAA,EAEU,YAAiE;AACvE,WAAO,KAAK,OAAO,OAAO;AAAA,EAC9B;AAAA,EAEO,WAAoB;AACvB,WAAO,KAAK,OAAO;AAAA,EACvB;AACJ;","names":[]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import ViewCspFinder from "./ViewCspFinder.js";
|
|
2
2
|
import { ReadonlyConfig } from "../../../types/config.js";
|
|
3
3
|
import { PageEntrypointOptions } from "../../../types/page.js";
|
|
4
4
|
import { EntrypointFile, EntrypointNameGenerator, EntrypointOptionsFinder, EntrypointParser, EntrypointType } from "../../../types/entrypoint.js";
|
|
5
|
-
export default class extends
|
|
5
|
+
export default class extends ViewCspFinder<PageEntrypointOptions> {
|
|
6
6
|
constructor(config: ReadonlyConfig);
|
|
7
7
|
type(): EntrypointType;
|
|
8
8
|
protected createFilenameGenerator(): EntrypointNameGenerator;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import ViewCspFinder from "./ViewCspFinder.js";
|
|
2
2
|
import PluginFinder from "./PluginFinder.js";
|
|
3
3
|
import { PageParser } from "../parser/index.js";
|
|
4
4
|
import { InlineNameGenerator } from "../name/index.js";
|
|
5
5
|
import {
|
|
6
6
|
EntrypointType
|
|
7
7
|
} from "./../../../types/entrypoint.js";
|
|
8
|
-
class PageFinder_default extends
|
|
8
|
+
class PageFinder_default extends ViewCspFinder {
|
|
9
9
|
constructor(config) {
|
|
10
10
|
super(config);
|
|
11
11
|
}
|
|
@@ -13,7 +13,7 @@ class PageFinder_default extends AbstractViewFinder {
|
|
|
13
13
|
return EntrypointType.Page;
|
|
14
14
|
}
|
|
15
15
|
createFilenameGenerator() {
|
|
16
|
-
return new InlineNameGenerator(this.type()).reserve(EntrypointType.Background).reserve(EntrypointType.Command).reserve(EntrypointType.ContentScript).reserve(EntrypointType.Sidebar).reserve(EntrypointType.Popup).reserve(EntrypointType.Offscreen).reserve(EntrypointType.Options);
|
|
16
|
+
return new InlineNameGenerator(this.type()).reserve(EntrypointType.Background).reserve(EntrypointType.Command).reserve(EntrypointType.ContentScript).reserve(EntrypointType.Sidebar).reserve(EntrypointType.Popup).reserve(EntrypointType.Offscreen).reserve(EntrypointType.Sandbox).reserve(EntrypointType.Options);
|
|
17
17
|
}
|
|
18
18
|
createViewAlias(file, options) {
|
|
19
19
|
const { name } = options;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/PageFinder.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/PageFinder.ts"],"sourcesContent":["import ViewCspFinder from \"./ViewCspFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {PageParser} from \"../parser\";\nimport {InlineNameGenerator} from \"../name\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {PageEntrypointOptions} from \"@typing/page\";\nimport {\n EntrypointFile,\n EntrypointNameGenerator,\n EntrypointOptionsFinder,\n EntrypointParser,\n EntrypointType,\n} from \"@typing/entrypoint\";\n\nexport default class extends ViewCspFinder<PageEntrypointOptions> {\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Page;\n }\n\n protected createFilenameGenerator(): EntrypointNameGenerator {\n return new InlineNameGenerator(this.type())\n .reserve(EntrypointType.Background)\n .reserve(EntrypointType.Command)\n .reserve(EntrypointType.ContentScript)\n .reserve(EntrypointType.Sidebar)\n .reserve(EntrypointType.Popup)\n .reserve(EntrypointType.Offscreen)\n .reserve(EntrypointType.Sandbox)\n .reserve(EntrypointType.Options);\n }\n\n protected createViewAlias(file: EntrypointFile, options: PageEntrypointOptions): string {\n const {name} = options;\n\n let alias = name ? this.aliases.name(name) : this.aliases.file(file);\n\n if (file.external) {\n alias = file.import;\n }\n\n return alias;\n }\n\n protected getParser(): EntrypointParser<PageEntrypointOptions> {\n return new PageParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<PageEntrypointOptions> {\n return new PluginFinder(this.config, \"page\", this);\n }\n\n public canMerge(): boolean {\n return this.config.mergePages;\n }\n}\n"],"mappings":"AAAA,OAAO,mBAAmB;AAC1B,OAAO,kBAAkB;AAEzB,SAAQ,kBAAiB;AACzB,SAAQ,2BAA0B;AAIlC;AAAA,EAKI;AAAA,OACG;AAEP,MAAO,2BAAsB,cAAqC;AAAA,EAC9D,YAAY,QAAwB;AAChC,UAAM,MAAM;AAAA,EAChB;AAAA,EAEO,OAAuB;AAC1B,WAAO,eAAe;AAAA,EAC1B;AAAA,EAEU,0BAAmD;AACzD,WAAO,IAAI,oBAAoB,KAAK,KAAK,CAAC,EACrC,QAAQ,eAAe,UAAU,EACjC,QAAQ,eAAe,OAAO,EAC9B,QAAQ,eAAe,aAAa,EACpC,QAAQ,eAAe,OAAO,EAC9B,QAAQ,eAAe,KAAK,EAC5B,QAAQ,eAAe,SAAS,EAChC,QAAQ,eAAe,OAAO,EAC9B,QAAQ,eAAe,OAAO;AAAA,EACvC;AAAA,EAEU,gBAAgB,MAAsB,SAAwC;AACpF,UAAM,EAAC,KAAI,IAAI;AAEf,QAAI,QAAQ,OAAO,KAAK,QAAQ,KAAK,IAAI,IAAI,KAAK,QAAQ,KAAK,IAAI;AAEnE,QAAI,KAAK,UAAU;AACf,cAAQ,KAAK;AAAA,IACjB;AAEA,WAAO;AAAA,EACX;AAAA,EAEU,YAAqD;AAC3D,WAAO,IAAI,WAAW,KAAK,MAAM;AAAA,EACrC;AAAA,EAEU,YAA4D;AAClE,WAAO,IAAI,aAAa,KAAK,QAAQ,QAAQ,IAAI;AAAA,EACrD;AAAA,EAEO,WAAoB;AACvB,WAAO,KAAK,OAAO;AAAA,EACvB;AACJ;","names":[]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import ViewCspFinder from "./ViewCspFinder.js";
|
|
2
2
|
import { ReadonlyConfig } from "../../../types/config.js";
|
|
3
3
|
import { PopupEntrypointOptions } from "../../../types/popup.js";
|
|
4
4
|
import { EntrypointOptionsFinder, EntrypointParser, EntrypointType } from "../../../types/entrypoint.js";
|
|
5
|
-
export default class extends
|
|
5
|
+
export default class extends ViewCspFinder<PopupEntrypointOptions> {
|
|
6
6
|
constructor(config: ReadonlyConfig);
|
|
7
7
|
type(): EntrypointType;
|
|
8
8
|
protected getParser(): EntrypointParser<PopupEntrypointOptions>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import
|
|
1
|
+
import ViewCspFinder from "./ViewCspFinder.js";
|
|
2
2
|
import PluginFinder from "./PluginFinder.js";
|
|
3
3
|
import { PopupParser } from "../parser/index.js";
|
|
4
4
|
import { EntrypointType } from "./../../../types/entrypoint.js";
|
|
5
|
-
class PopupFinder_default extends
|
|
5
|
+
class PopupFinder_default extends ViewCspFinder {
|
|
6
6
|
constructor(config) {
|
|
7
7
|
super(config);
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/PopupFinder.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/PopupFinder.ts"],"sourcesContent":["import ViewCspFinder from \"./ViewCspFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {PopupParser} from \"../parser\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {PopupEntrypointOptions} from \"@typing/popup\";\nimport {EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends ViewCspFinder<PopupEntrypointOptions> {\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Popup;\n }\n\n protected getParser(): EntrypointParser<PopupEntrypointOptions> {\n return new PopupParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<PopupEntrypointOptions> {\n return new PluginFinder(this.config, \"popup\", this);\n }\n\n public canMerge(): boolean {\n return this.config.mergePopup;\n }\n\n public allowMultiple(): boolean {\n return this.config.multiplePopup;\n }\n}\n"],"mappings":"AAAA,OAAO,mBAAmB;AAC1B,OAAO,kBAAkB;AAEzB,SAAQ,mBAAkB;AAI1B,SAAmD,sBAAqB;AAExE,MAAO,4BAAsB,cAAsC;AAAA,EAC/D,YAAY,QAAwB;AAChC,UAAM,MAAM;AAAA,EAChB;AAAA,EAEO,OAAuB;AAC1B,WAAO,eAAe;AAAA,EAC1B;AAAA,EAEU,YAAsD;AAC5D,WAAO,IAAI,YAAY,KAAK,MAAM;AAAA,EACtC;AAAA,EAEU,YAA6D;AACnE,WAAO,IAAI,aAAa,KAAK,QAAQ,SAAS,IAAI;AAAA,EACtD;AAAA,EAEO,WAAoB;AACvB,WAAO,KAAK,OAAO;AAAA,EACvB;AAAA,EAEO,gBAAyB;AAC5B,WAAO,KAAK,OAAO;AAAA,EACvB;AACJ;","names":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import AbstractTransportFinder from "./AbstractTransportFinder.js";
|
|
2
|
+
import { ReadonlyConfig } from "../../../types/config.js";
|
|
3
|
+
import { EntrypointOptionsFinder, EntrypointParser, EntrypointType } from "../../../types/entrypoint.js";
|
|
4
|
+
import { SandboxEntrypointOptions, SandboxOptions } from "../../../types/sandbox.js";
|
|
5
|
+
export default class extends AbstractTransportFinder<SandboxEntrypointOptions, SandboxOptions> {
|
|
6
|
+
constructor(config: ReadonlyConfig);
|
|
7
|
+
type(): EntrypointType;
|
|
8
|
+
protected getParser(): EntrypointParser<SandboxEntrypointOptions>;
|
|
9
|
+
protected getPlugin(): EntrypointOptionsFinder<SandboxEntrypointOptions>;
|
|
10
|
+
canMerge(): boolean;
|
|
11
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import AbstractTransportFinder from "./AbstractTransportFinder.js";
|
|
2
|
+
import PluginFinder from "./PluginFinder.js";
|
|
3
|
+
import { SandboxParser } from "../parser/index.js";
|
|
4
|
+
import { EntrypointType } from "./../../../types/entrypoint.js";
|
|
5
|
+
class SandboxFinder_default extends AbstractTransportFinder {
|
|
6
|
+
constructor(config) {
|
|
7
|
+
super(config);
|
|
8
|
+
}
|
|
9
|
+
type() {
|
|
10
|
+
return EntrypointType.Sandbox;
|
|
11
|
+
}
|
|
12
|
+
getParser() {
|
|
13
|
+
return new SandboxParser(this.config);
|
|
14
|
+
}
|
|
15
|
+
getPlugin() {
|
|
16
|
+
return new PluginFinder(this.config, "sandbox", this);
|
|
17
|
+
}
|
|
18
|
+
canMerge() {
|
|
19
|
+
return this.config.mergeSandbox;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export {
|
|
23
|
+
SandboxFinder_default as default
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=SandboxFinder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/SandboxFinder.ts"],"sourcesContent":["import AbstractTransportFinder from \"./AbstractTransportFinder\";\nimport PluginFinder from \"./PluginFinder\";\n\nimport {SandboxParser} from \"../parser\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\nimport {SandboxEntrypointOptions, SandboxOptions} from \"@typing/sandbox\";\n\nexport default class extends AbstractTransportFinder<SandboxEntrypointOptions, SandboxOptions> {\n constructor(config: ReadonlyConfig) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Sandbox;\n }\n\n protected getParser(): EntrypointParser<SandboxEntrypointOptions> {\n return new SandboxParser(this.config);\n }\n\n protected getPlugin(): EntrypointOptionsFinder<SandboxEntrypointOptions> {\n return new PluginFinder(this.config, \"sandbox\", this);\n }\n\n public canMerge(): boolean {\n return this.config.mergeSandbox;\n }\n}\n"],"mappings":"AAAA,OAAO,6BAA6B;AACpC,OAAO,kBAAkB;AAEzB,SAAQ,qBAAoB;AAG5B,SAAmD,sBAAqB;AAGxE,MAAO,8BAAsB,wBAAkE;AAAA,EAC3F,YAAY,QAAwB;AAChC,UAAM,MAAM;AAAA,EAChB;AAAA,EAEO,OAAuB;AAC1B,WAAO,eAAe;AAAA,EAC1B;AAAA,EAEU,YAAwD;AAC9D,WAAO,IAAI,cAAc,KAAK,MAAM;AAAA,EACxC;AAAA,EAEU,YAA+D;AACrE,WAAO,IAAI,aAAa,KAAK,QAAQ,WAAW,IAAI;AAAA,EACxD;AAAA,EAEO,WAAoB;AACvB,WAAO,KAAK,OAAO;AAAA,EACvB;AACJ;","names":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import AbstractTransportFinder from "./AbstractTransportFinder.js";
|
|
2
|
+
import ViewCspFinder from "./ViewCspFinder.js";
|
|
3
|
+
import { ViewItems } from "./AbstractViewFinder.js";
|
|
4
|
+
import { ReadonlyConfig } from "../../../types/config.js";
|
|
5
|
+
import { SandboxCspConfig, SandboxEntrypointOptions } from "../../../types/sandbox.js";
|
|
6
|
+
import { EntrypointOptionsFinder, EntrypointParser, EntrypointType } from "../../../types/entrypoint.js";
|
|
7
|
+
export default class extends ViewCspFinder<SandboxEntrypointOptions, SandboxCspConfig> {
|
|
8
|
+
protected readonly finder: AbstractTransportFinder<SandboxEntrypointOptions>;
|
|
9
|
+
constructor(config: ReadonlyConfig, finder: AbstractTransportFinder<SandboxEntrypointOptions>);
|
|
10
|
+
type(): EntrypointType;
|
|
11
|
+
protected getParser(): EntrypointParser<SandboxEntrypointOptions>;
|
|
12
|
+
protected getPlugin(): EntrypointOptionsFinder<SandboxEntrypointOptions>;
|
|
13
|
+
protected getViews(): Promise<ViewItems<SandboxEntrypointOptions>>;
|
|
14
|
+
canMerge(): boolean;
|
|
15
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import ViewCspFinder from "./ViewCspFinder.js";
|
|
2
|
+
import { EntrypointType } from "./../../../types/entrypoint.js";
|
|
3
|
+
class SandboxViewFinder_default extends ViewCspFinder {
|
|
4
|
+
constructor(config, finder) {
|
|
5
|
+
super(config);
|
|
6
|
+
this.finder = finder;
|
|
7
|
+
}
|
|
8
|
+
finder;
|
|
9
|
+
type() {
|
|
10
|
+
return EntrypointType.Sandbox;
|
|
11
|
+
}
|
|
12
|
+
getParser() {
|
|
13
|
+
return this.finder.parser();
|
|
14
|
+
}
|
|
15
|
+
getPlugin() {
|
|
16
|
+
return this.finder.plugin();
|
|
17
|
+
}
|
|
18
|
+
async getViews() {
|
|
19
|
+
const views = await super.getViews();
|
|
20
|
+
for (const view of views.values()) {
|
|
21
|
+
const { name, csp, readyTimeout, requestTimeout, removeOnRequestTimeout, ...options } = view.options;
|
|
22
|
+
view.options = options;
|
|
23
|
+
}
|
|
24
|
+
return views;
|
|
25
|
+
}
|
|
26
|
+
canMerge() {
|
|
27
|
+
return this.config.mergeSandbox;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export {
|
|
31
|
+
SandboxViewFinder_default as default
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=SandboxViewFinder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/cli/entrypoint/finder/SandboxViewFinder.ts"],"sourcesContent":["import AbstractTransportFinder from \"./AbstractTransportFinder\";\nimport ViewCspFinder from \"./ViewCspFinder\";\n\nimport {ViewItems} from \"./AbstractViewFinder\";\n\nimport {ReadonlyConfig} from \"@typing/config\";\nimport {SandboxCspConfig, SandboxEntrypointOptions} from \"@typing/sandbox\";\nimport {EntrypointOptionsFinder, EntrypointParser, EntrypointType} from \"@typing/entrypoint\";\n\nexport default class extends ViewCspFinder<SandboxEntrypointOptions, SandboxCspConfig> {\n constructor(\n config: ReadonlyConfig,\n protected readonly finder: AbstractTransportFinder<SandboxEntrypointOptions>\n ) {\n super(config);\n }\n\n public type(): EntrypointType {\n return EntrypointType.Sandbox;\n }\n\n protected getParser(): EntrypointParser<SandboxEntrypointOptions> {\n return this.finder.parser();\n }\n\n protected getPlugin(): EntrypointOptionsFinder<SandboxEntrypointOptions> {\n return this.finder.plugin();\n }\n\n protected async getViews(): Promise<ViewItems<SandboxEntrypointOptions>> {\n const views = await super.getViews();\n\n for (const view of views.values()) {\n const {name, csp, readyTimeout, requestTimeout, removeOnRequestTimeout, ...options} = view.options;\n\n view.options = options;\n }\n\n return views;\n }\n\n public canMerge(): boolean {\n return this.config.mergeSandbox;\n }\n}\n"],"mappings":"AACA,OAAO,mBAAmB;AAM1B,SAAmD,sBAAqB;AAExE,MAAO,kCAAsB,cAA0D;AAAA,EACnF,YACI,QACmB,QACrB;AACE,UAAM,MAAM;AAFO;AAAA,EAGvB;AAAA,EAHuB;AAAA,EAKhB,OAAuB;AAC1B,WAAO,eAAe;AAAA,EAC1B;AAAA,EAEU,YAAwD;AAC9D,WAAO,KAAK,OAAO,OAAO;AAAA,EAC9B;AAAA,EAEU,YAA+D;AACrE,WAAO,KAAK,OAAO,OAAO;AAAA,EAC9B;AAAA,EAEA,MAAgB,WAAyD;AACrE,UAAM,QAAQ,MAAM,MAAM,SAAS;AAEnC,eAAW,QAAQ,MAAM,OAAO,GAAG;AAC/B,YAAM,EAAC,MAAM,KAAK,cAAc,gBAAgB,wBAAwB,GAAG,QAAO,IAAI,KAAK;AAE3F,WAAK,UAAU;AAAA,IACnB;AAEA,WAAO;AAAA,EACX;AAAA,EAEO,WAAoB;AACvB,WAAO,KAAK,OAAO;AAAA,EACvB;AACJ;","names":[]}
|