forked from Kieran/zap.stream
formatting
This commit is contained in:
parent
16c54185bb
commit
0e590feab4
@ -22,4 +22,4 @@ steps:
|
|||||||
volumes:
|
volumes:
|
||||||
- name: cache
|
- name: cache
|
||||||
claim:
|
claim:
|
||||||
name: docker-cache
|
name: docker-cache
|
||||||
|
@ -1,20 +1,19 @@
|
|||||||
module.exports = {
|
module.exports = {
|
||||||
extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended"],
|
extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended"],
|
||||||
parser: "@typescript-eslint/parser",
|
parser: "@typescript-eslint/parser",
|
||||||
plugins: ["@typescript-eslint"],
|
plugins: ["@typescript-eslint"],
|
||||||
root: true,
|
root: true,
|
||||||
ignorePatterns: ["build/", "*.test.ts", "*.js"],
|
ignorePatterns: ["build/", "*.test.ts", "*.js"],
|
||||||
env: {
|
env: {
|
||||||
browser: true,
|
browser: true,
|
||||||
worker: true,
|
worker: true,
|
||||||
commonjs: true,
|
commonjs: true,
|
||||||
node: false,
|
node: false,
|
||||||
},
|
},
|
||||||
"rules": {
|
rules: {
|
||||||
"@typescript-eslint/no-non-null-assertion": "error",
|
"@typescript-eslint/no-non-null-assertion": "error",
|
||||||
"require-await": "error",
|
"require-await": "error",
|
||||||
"eqeqeq": "error",
|
eqeqeq: "error",
|
||||||
"object-shorthand": "warn",
|
"object-shorthand": "warn",
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
6
.yarn/sdks/eslint/bin/eslint.js
vendored
6
.yarn/sdks/eslint/bin/eslint.js
vendored
@ -1,8 +1,8 @@
|
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
|
|
||||||
const {existsSync} = require(`fs`);
|
const { existsSync } = require(`fs`);
|
||||||
const {createRequire} = require(`module`);
|
const { createRequire } = require(`module`);
|
||||||
const {resolve} = require(`path`);
|
const { resolve } = require(`path`);
|
||||||
|
|
||||||
const relPnpApiPath = "../../../../.pnp.cjs";
|
const relPnpApiPath = "../../../../.pnp.cjs";
|
||||||
|
|
||||||
|
6
.yarn/sdks/eslint/lib/api.js
vendored
6
.yarn/sdks/eslint/lib/api.js
vendored
@ -1,8 +1,8 @@
|
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
|
|
||||||
const {existsSync} = require(`fs`);
|
const { existsSync } = require(`fs`);
|
||||||
const {createRequire} = require(`module`);
|
const { createRequire } = require(`module`);
|
||||||
const {resolve} = require(`path`);
|
const { resolve } = require(`path`);
|
||||||
|
|
||||||
const relPnpApiPath = "../../../../.pnp.cjs";
|
const relPnpApiPath = "../../../../.pnp.cjs";
|
||||||
|
|
||||||
|
6
.yarn/sdks/prettier/index.js
vendored
6
.yarn/sdks/prettier/index.js
vendored
@ -1,8 +1,8 @@
|
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
|
|
||||||
const {existsSync} = require(`fs`);
|
const { existsSync } = require(`fs`);
|
||||||
const {createRequire} = require(`module`);
|
const { createRequire } = require(`module`);
|
||||||
const {resolve} = require(`path`);
|
const { resolve } = require(`path`);
|
||||||
|
|
||||||
const relPnpApiPath = "../../../.pnp.cjs";
|
const relPnpApiPath = "../../../.pnp.cjs";
|
||||||
|
|
||||||
|
6
.yarn/sdks/typescript/lib/tsc.js
vendored
6
.yarn/sdks/typescript/lib/tsc.js
vendored
@ -1,8 +1,8 @@
|
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
|
|
||||||
const {existsSync} = require(`fs`);
|
const { existsSync } = require(`fs`);
|
||||||
const {createRequire} = require(`module`);
|
const { createRequire } = require(`module`);
|
||||||
const {resolve} = require(`path`);
|
const { resolve } = require(`path`);
|
||||||
|
|
||||||
const relPnpApiPath = "../../../../.pnp.cjs";
|
const relPnpApiPath = "../../../../.pnp.cjs";
|
||||||
|
|
||||||
|
185
.yarn/sdks/typescript/lib/tsserver.js
vendored
185
.yarn/sdks/typescript/lib/tsserver.js
vendored
@ -1,29 +1,31 @@
|
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
|
|
||||||
const {existsSync} = require(`fs`);
|
const { existsSync } = require(`fs`);
|
||||||
const {createRequire} = require(`module`);
|
const { createRequire } = require(`module`);
|
||||||
const {resolve} = require(`path`);
|
const { resolve } = require(`path`);
|
||||||
|
|
||||||
const relPnpApiPath = "../../../../.pnp.cjs";
|
const relPnpApiPath = "../../../../.pnp.cjs";
|
||||||
|
|
||||||
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
|
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
|
||||||
const absRequire = createRequire(absPnpApiPath);
|
const absRequire = createRequire(absPnpApiPath);
|
||||||
|
|
||||||
const moduleWrapper = tsserver => {
|
const moduleWrapper = (tsserver) => {
|
||||||
if (!process.versions.pnp) {
|
if (!process.versions.pnp) {
|
||||||
return tsserver;
|
return tsserver;
|
||||||
}
|
}
|
||||||
|
|
||||||
const {isAbsolute} = require(`path`);
|
const { isAbsolute } = require(`path`);
|
||||||
const pnpApi = require(`pnpapi`);
|
const pnpApi = require(`pnpapi`);
|
||||||
|
|
||||||
const isVirtual = str => str.match(/\/(\$\$virtual|__virtual__)\//);
|
const isVirtual = (str) => str.match(/\/(\$\$virtual|__virtual__)\//);
|
||||||
const isPortal = str => str.startsWith("portal:/");
|
const isPortal = (str) => str.startsWith("portal:/");
|
||||||
const normalize = str => str.replace(/\\/g, `/`).replace(/^\/?/, `/`);
|
const normalize = (str) => str.replace(/\\/g, `/`).replace(/^\/?/, `/`);
|
||||||
|
|
||||||
const dependencyTreeRoots = new Set(pnpApi.getDependencyTreeRoots().map(locator => {
|
const dependencyTreeRoots = new Set(
|
||||||
return `${locator.name}@${locator.reference}`;
|
pnpApi.getDependencyTreeRoots().map((locator) => {
|
||||||
}));
|
return `${locator.name}@${locator.reference}`;
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
// VSCode sends the zip paths to TS using the "zip://" prefix, that TS
|
// VSCode sends the zip paths to TS using the "zip://" prefix, that TS
|
||||||
// doesn't understand. This layer makes sure to remove the protocol
|
// doesn't understand. This layer makes sure to remove the protocol
|
||||||
@ -31,7 +33,11 @@ const moduleWrapper = tsserver => {
|
|||||||
|
|
||||||
function toEditorPath(str) {
|
function toEditorPath(str) {
|
||||||
// We add the `zip:` prefix to both `.zip/` paths and virtual paths
|
// We add the `zip:` prefix to both `.zip/` paths and virtual paths
|
||||||
if (isAbsolute(str) && !str.match(/^\^?(zip:|\/zip\/)/) && (str.match(/\.zip\//) || isVirtual(str))) {
|
if (
|
||||||
|
isAbsolute(str) &&
|
||||||
|
!str.match(/^\^?(zip:|\/zip\/)/) &&
|
||||||
|
(str.match(/\.zip\//) || isVirtual(str))
|
||||||
|
) {
|
||||||
// We also take the opportunity to turn virtual paths into physical ones;
|
// We also take the opportunity to turn virtual paths into physical ones;
|
||||||
// this makes it much easier to work with workspaces that list peer
|
// this makes it much easier to work with workspaces that list peer
|
||||||
// dependencies, since otherwise Ctrl+Click would bring us to the virtual
|
// dependencies, since otherwise Ctrl+Click would bring us to the virtual
|
||||||
@ -45,7 +51,11 @@ const moduleWrapper = tsserver => {
|
|||||||
const resolved = isVirtual(str) ? pnpApi.resolveVirtual(str) : str;
|
const resolved = isVirtual(str) ? pnpApi.resolveVirtual(str) : str;
|
||||||
if (resolved) {
|
if (resolved) {
|
||||||
const locator = pnpApi.findPackageLocator(resolved);
|
const locator = pnpApi.findPackageLocator(resolved);
|
||||||
if (locator && (dependencyTreeRoots.has(`${locator.name}@${locator.reference}`) || isPortal(locator.reference))) {
|
if (
|
||||||
|
locator &&
|
||||||
|
(dependencyTreeRoots.has(`${locator.name}@${locator.reference}`) ||
|
||||||
|
isPortal(locator.reference))
|
||||||
|
) {
|
||||||
str = resolved;
|
str = resolved;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -73,41 +83,55 @@ const moduleWrapper = tsserver => {
|
|||||||
// Before | ^/zip/c:/foo/bar.zip/package.json
|
// Before | ^/zip/c:/foo/bar.zip/package.json
|
||||||
// After | ^/zip//c:/foo/bar.zip/package.json
|
// After | ^/zip//c:/foo/bar.zip/package.json
|
||||||
//
|
//
|
||||||
case `vscode <1.61`: {
|
case `vscode <1.61`:
|
||||||
str = `^zip:${str}`;
|
{
|
||||||
} break;
|
str = `^zip:${str}`;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case `vscode <1.66`: {
|
case `vscode <1.66`:
|
||||||
str = `^/zip/${str}`;
|
{
|
||||||
} break;
|
str = `^/zip/${str}`;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case `vscode <1.68`: {
|
case `vscode <1.68`:
|
||||||
str = `^/zip${str}`;
|
{
|
||||||
} break;
|
str = `^/zip${str}`;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case `vscode`: {
|
case `vscode`:
|
||||||
str = `^/zip/${str}`;
|
{
|
||||||
} break;
|
str = `^/zip/${str}`;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
// To make "go to definition" work,
|
// To make "go to definition" work,
|
||||||
// We have to resolve the actual file system path from virtual path
|
// We have to resolve the actual file system path from virtual path
|
||||||
// and convert scheme to supported by [vim-rzip](https://github.com/lbrayner/vim-rzip)
|
// and convert scheme to supported by [vim-rzip](https://github.com/lbrayner/vim-rzip)
|
||||||
case `coc-nvim`: {
|
case `coc-nvim`:
|
||||||
str = normalize(resolved).replace(/\.zip\//, `.zip::`);
|
{
|
||||||
str = resolve(`zipfile:${str}`);
|
str = normalize(resolved).replace(/\.zip\//, `.zip::`);
|
||||||
} break;
|
str = resolve(`zipfile:${str}`);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
// Support neovim native LSP and [typescript-language-server](https://github.com/theia-ide/typescript-language-server)
|
// Support neovim native LSP and [typescript-language-server](https://github.com/theia-ide/typescript-language-server)
|
||||||
// We have to resolve the actual file system path from virtual path,
|
// We have to resolve the actual file system path from virtual path,
|
||||||
// everything else is up to neovim
|
// everything else is up to neovim
|
||||||
case `neovim`: {
|
case `neovim`:
|
||||||
str = normalize(resolved).replace(/\.zip\//, `.zip::`);
|
{
|
||||||
str = `zipfile://${str}`;
|
str = normalize(resolved).replace(/\.zip\//, `.zip::`);
|
||||||
} break;
|
str = `zipfile://${str}`;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default: {
|
default:
|
||||||
str = `zip:${str}`;
|
{
|
||||||
} break;
|
str = `zip:${str}`;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
str = str.replace(/^\/?/, process.platform === `win32` ? `` : `/`);
|
str = str.replace(/^\/?/, process.platform === `win32` ? `` : `/`);
|
||||||
@ -119,26 +143,35 @@ const moduleWrapper = tsserver => {
|
|||||||
|
|
||||||
function fromEditorPath(str) {
|
function fromEditorPath(str) {
|
||||||
switch (hostInfo) {
|
switch (hostInfo) {
|
||||||
case `coc-nvim`: {
|
case `coc-nvim`:
|
||||||
str = str.replace(/\.zip::/, `.zip/`);
|
{
|
||||||
// The path for coc-nvim is in format of /<pwd>/zipfile:/<pwd>/.yarn/...
|
str = str.replace(/\.zip::/, `.zip/`);
|
||||||
// So in order to convert it back, we use .* to match all the thing
|
// The path for coc-nvim is in format of /<pwd>/zipfile:/<pwd>/.yarn/...
|
||||||
// before `zipfile:`
|
// So in order to convert it back, we use .* to match all the thing
|
||||||
return process.platform === `win32`
|
// before `zipfile:`
|
||||||
? str.replace(/^.*zipfile:\//, ``)
|
return process.platform === `win32`
|
||||||
: str.replace(/^.*zipfile:/, ``);
|
? str.replace(/^.*zipfile:\//, ``)
|
||||||
} break;
|
: str.replace(/^.*zipfile:/, ``);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case `neovim`: {
|
case `neovim`:
|
||||||
str = str.replace(/\.zip::/, `.zip/`);
|
{
|
||||||
// The path for neovim is in format of zipfile:///<pwd>/.yarn/...
|
str = str.replace(/\.zip::/, `.zip/`);
|
||||||
return str.replace(/^zipfile:\/\//, ``);
|
// The path for neovim is in format of zipfile:///<pwd>/.yarn/...
|
||||||
} break;
|
return str.replace(/^zipfile:\/\//, ``);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case `vscode`:
|
case `vscode`:
|
||||||
default: {
|
default:
|
||||||
return str.replace(/^\^?(zip:|\/zip(\/ts-nul-authority)?)\/+/, process.platform === `win32` ? `` : `/`)
|
{
|
||||||
} break;
|
return str.replace(
|
||||||
|
/^\^?(zip:|\/zip(\/ts-nul-authority)?)\/+/,
|
||||||
|
process.platform === `win32` ? `` : `/`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -150,8 +183,9 @@ const moduleWrapper = tsserver => {
|
|||||||
// TypeScript already does local loads and if this code is running the user trusts the workspace
|
// TypeScript already does local loads and if this code is running the user trusts the workspace
|
||||||
// https://github.com/microsoft/vscode/issues/45856
|
// https://github.com/microsoft/vscode/issues/45856
|
||||||
const ConfiguredProject = tsserver.server.ConfiguredProject;
|
const ConfiguredProject = tsserver.server.ConfiguredProject;
|
||||||
const {enablePluginsWithOptions: originalEnablePluginsWithOptions} = ConfiguredProject.prototype;
|
const { enablePluginsWithOptions: originalEnablePluginsWithOptions } =
|
||||||
ConfiguredProject.prototype.enablePluginsWithOptions = function() {
|
ConfiguredProject.prototype;
|
||||||
|
ConfiguredProject.prototype.enablePluginsWithOptions = function () {
|
||||||
this.projectService.allowLocalPluginLoads = true;
|
this.projectService.allowLocalPluginLoads = true;
|
||||||
return originalEnablePluginsWithOptions.apply(this, arguments);
|
return originalEnablePluginsWithOptions.apply(this, arguments);
|
||||||
};
|
};
|
||||||
@ -161,12 +195,13 @@ const moduleWrapper = tsserver => {
|
|||||||
// like an absolute path of ours and normalize it.
|
// like an absolute path of ours and normalize it.
|
||||||
|
|
||||||
const Session = tsserver.server.Session;
|
const Session = tsserver.server.Session;
|
||||||
const {onMessage: originalOnMessage, send: originalSend} = Session.prototype;
|
const { onMessage: originalOnMessage, send: originalSend } =
|
||||||
|
Session.prototype;
|
||||||
let hostInfo = `unknown`;
|
let hostInfo = `unknown`;
|
||||||
|
|
||||||
Object.assign(Session.prototype, {
|
Object.assign(Session.prototype, {
|
||||||
onMessage(/** @type {string | object} */ message) {
|
onMessage(/** @type {string | object} */ message) {
|
||||||
const isStringMessage = typeof message === 'string';
|
const isStringMessage = typeof message === "string";
|
||||||
const parsedMessage = isStringMessage ? JSON.parse(message) : message;
|
const parsedMessage = isStringMessage ? JSON.parse(message) : message;
|
||||||
|
|
||||||
if (
|
if (
|
||||||
@ -177,10 +212,12 @@ const moduleWrapper = tsserver => {
|
|||||||
) {
|
) {
|
||||||
hostInfo = parsedMessage.arguments.hostInfo;
|
hostInfo = parsedMessage.arguments.hostInfo;
|
||||||
if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK) {
|
if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK) {
|
||||||
const [, major, minor] = (process.env.VSCODE_IPC_HOOK.match(
|
const [, major, minor] = (
|
||||||
// The RegExp from https://semver.org/ but without the caret at the start
|
process.env.VSCODE_IPC_HOOK.match(
|
||||||
/(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/
|
// The RegExp from https://semver.org/ but without the caret at the start
|
||||||
) ?? []).map(Number)
|
/(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/
|
||||||
|
) ?? []
|
||||||
|
).map(Number);
|
||||||
|
|
||||||
if (major === 1) {
|
if (major === 1) {
|
||||||
if (minor < 61) {
|
if (minor < 61) {
|
||||||
@ -194,21 +231,31 @@ const moduleWrapper = tsserver => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const processedMessageJSON = JSON.stringify(parsedMessage, (key, value) => {
|
const processedMessageJSON = JSON.stringify(
|
||||||
return typeof value === 'string' ? fromEditorPath(value) : value;
|
parsedMessage,
|
||||||
});
|
(key, value) => {
|
||||||
|
return typeof value === "string" ? fromEditorPath(value) : value;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
return originalOnMessage.call(
|
return originalOnMessage.call(
|
||||||
this,
|
this,
|
||||||
isStringMessage ? processedMessageJSON : JSON.parse(processedMessageJSON)
|
isStringMessage
|
||||||
|
? processedMessageJSON
|
||||||
|
: JSON.parse(processedMessageJSON)
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
send(/** @type {any} */ msg) {
|
send(/** @type {any} */ msg) {
|
||||||
return originalSend.call(this, JSON.parse(JSON.stringify(msg, (key, value) => {
|
return originalSend.call(
|
||||||
return typeof value === `string` ? toEditorPath(value) : value;
|
this,
|
||||||
})));
|
JSON.parse(
|
||||||
}
|
JSON.stringify(msg, (key, value) => {
|
||||||
|
return typeof value === `string` ? toEditorPath(value) : value;
|
||||||
|
})
|
||||||
|
)
|
||||||
|
);
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
return tsserver;
|
return tsserver;
|
||||||
|
185
.yarn/sdks/typescript/lib/tsserverlibrary.js
vendored
185
.yarn/sdks/typescript/lib/tsserverlibrary.js
vendored
@ -1,29 +1,31 @@
|
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
|
|
||||||
const {existsSync} = require(`fs`);
|
const { existsSync } = require(`fs`);
|
||||||
const {createRequire} = require(`module`);
|
const { createRequire } = require(`module`);
|
||||||
const {resolve} = require(`path`);
|
const { resolve } = require(`path`);
|
||||||
|
|
||||||
const relPnpApiPath = "../../../../.pnp.cjs";
|
const relPnpApiPath = "../../../../.pnp.cjs";
|
||||||
|
|
||||||
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
|
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
|
||||||
const absRequire = createRequire(absPnpApiPath);
|
const absRequire = createRequire(absPnpApiPath);
|
||||||
|
|
||||||
const moduleWrapper = tsserver => {
|
const moduleWrapper = (tsserver) => {
|
||||||
if (!process.versions.pnp) {
|
if (!process.versions.pnp) {
|
||||||
return tsserver;
|
return tsserver;
|
||||||
}
|
}
|
||||||
|
|
||||||
const {isAbsolute} = require(`path`);
|
const { isAbsolute } = require(`path`);
|
||||||
const pnpApi = require(`pnpapi`);
|
const pnpApi = require(`pnpapi`);
|
||||||
|
|
||||||
const isVirtual = str => str.match(/\/(\$\$virtual|__virtual__)\//);
|
const isVirtual = (str) => str.match(/\/(\$\$virtual|__virtual__)\//);
|
||||||
const isPortal = str => str.startsWith("portal:/");
|
const isPortal = (str) => str.startsWith("portal:/");
|
||||||
const normalize = str => str.replace(/\\/g, `/`).replace(/^\/?/, `/`);
|
const normalize = (str) => str.replace(/\\/g, `/`).replace(/^\/?/, `/`);
|
||||||
|
|
||||||
const dependencyTreeRoots = new Set(pnpApi.getDependencyTreeRoots().map(locator => {
|
const dependencyTreeRoots = new Set(
|
||||||
return `${locator.name}@${locator.reference}`;
|
pnpApi.getDependencyTreeRoots().map((locator) => {
|
||||||
}));
|
return `${locator.name}@${locator.reference}`;
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
// VSCode sends the zip paths to TS using the "zip://" prefix, that TS
|
// VSCode sends the zip paths to TS using the "zip://" prefix, that TS
|
||||||
// doesn't understand. This layer makes sure to remove the protocol
|
// doesn't understand. This layer makes sure to remove the protocol
|
||||||
@ -31,7 +33,11 @@ const moduleWrapper = tsserver => {
|
|||||||
|
|
||||||
function toEditorPath(str) {
|
function toEditorPath(str) {
|
||||||
// We add the `zip:` prefix to both `.zip/` paths and virtual paths
|
// We add the `zip:` prefix to both `.zip/` paths and virtual paths
|
||||||
if (isAbsolute(str) && !str.match(/^\^?(zip:|\/zip\/)/) && (str.match(/\.zip\//) || isVirtual(str))) {
|
if (
|
||||||
|
isAbsolute(str) &&
|
||||||
|
!str.match(/^\^?(zip:|\/zip\/)/) &&
|
||||||
|
(str.match(/\.zip\//) || isVirtual(str))
|
||||||
|
) {
|
||||||
// We also take the opportunity to turn virtual paths into physical ones;
|
// We also take the opportunity to turn virtual paths into physical ones;
|
||||||
// this makes it much easier to work with workspaces that list peer
|
// this makes it much easier to work with workspaces that list peer
|
||||||
// dependencies, since otherwise Ctrl+Click would bring us to the virtual
|
// dependencies, since otherwise Ctrl+Click would bring us to the virtual
|
||||||
@ -45,7 +51,11 @@ const moduleWrapper = tsserver => {
|
|||||||
const resolved = isVirtual(str) ? pnpApi.resolveVirtual(str) : str;
|
const resolved = isVirtual(str) ? pnpApi.resolveVirtual(str) : str;
|
||||||
if (resolved) {
|
if (resolved) {
|
||||||
const locator = pnpApi.findPackageLocator(resolved);
|
const locator = pnpApi.findPackageLocator(resolved);
|
||||||
if (locator && (dependencyTreeRoots.has(`${locator.name}@${locator.reference}`) || isPortal(locator.reference))) {
|
if (
|
||||||
|
locator &&
|
||||||
|
(dependencyTreeRoots.has(`${locator.name}@${locator.reference}`) ||
|
||||||
|
isPortal(locator.reference))
|
||||||
|
) {
|
||||||
str = resolved;
|
str = resolved;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -73,41 +83,55 @@ const moduleWrapper = tsserver => {
|
|||||||
// Before | ^/zip/c:/foo/bar.zip/package.json
|
// Before | ^/zip/c:/foo/bar.zip/package.json
|
||||||
// After | ^/zip//c:/foo/bar.zip/package.json
|
// After | ^/zip//c:/foo/bar.zip/package.json
|
||||||
//
|
//
|
||||||
case `vscode <1.61`: {
|
case `vscode <1.61`:
|
||||||
str = `^zip:${str}`;
|
{
|
||||||
} break;
|
str = `^zip:${str}`;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case `vscode <1.66`: {
|
case `vscode <1.66`:
|
||||||
str = `^/zip/${str}`;
|
{
|
||||||
} break;
|
str = `^/zip/${str}`;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case `vscode <1.68`: {
|
case `vscode <1.68`:
|
||||||
str = `^/zip${str}`;
|
{
|
||||||
} break;
|
str = `^/zip${str}`;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case `vscode`: {
|
case `vscode`:
|
||||||
str = `^/zip/${str}`;
|
{
|
||||||
} break;
|
str = `^/zip/${str}`;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
// To make "go to definition" work,
|
// To make "go to definition" work,
|
||||||
// We have to resolve the actual file system path from virtual path
|
// We have to resolve the actual file system path from virtual path
|
||||||
// and convert scheme to supported by [vim-rzip](https://github.com/lbrayner/vim-rzip)
|
// and convert scheme to supported by [vim-rzip](https://github.com/lbrayner/vim-rzip)
|
||||||
case `coc-nvim`: {
|
case `coc-nvim`:
|
||||||
str = normalize(resolved).replace(/\.zip\//, `.zip::`);
|
{
|
||||||
str = resolve(`zipfile:${str}`);
|
str = normalize(resolved).replace(/\.zip\//, `.zip::`);
|
||||||
} break;
|
str = resolve(`zipfile:${str}`);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
// Support neovim native LSP and [typescript-language-server](https://github.com/theia-ide/typescript-language-server)
|
// Support neovim native LSP and [typescript-language-server](https://github.com/theia-ide/typescript-language-server)
|
||||||
// We have to resolve the actual file system path from virtual path,
|
// We have to resolve the actual file system path from virtual path,
|
||||||
// everything else is up to neovim
|
// everything else is up to neovim
|
||||||
case `neovim`: {
|
case `neovim`:
|
||||||
str = normalize(resolved).replace(/\.zip\//, `.zip::`);
|
{
|
||||||
str = `zipfile://${str}`;
|
str = normalize(resolved).replace(/\.zip\//, `.zip::`);
|
||||||
} break;
|
str = `zipfile://${str}`;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default: {
|
default:
|
||||||
str = `zip:${str}`;
|
{
|
||||||
} break;
|
str = `zip:${str}`;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
str = str.replace(/^\/?/, process.platform === `win32` ? `` : `/`);
|
str = str.replace(/^\/?/, process.platform === `win32` ? `` : `/`);
|
||||||
@ -119,26 +143,35 @@ const moduleWrapper = tsserver => {
|
|||||||
|
|
||||||
function fromEditorPath(str) {
|
function fromEditorPath(str) {
|
||||||
switch (hostInfo) {
|
switch (hostInfo) {
|
||||||
case `coc-nvim`: {
|
case `coc-nvim`:
|
||||||
str = str.replace(/\.zip::/, `.zip/`);
|
{
|
||||||
// The path for coc-nvim is in format of /<pwd>/zipfile:/<pwd>/.yarn/...
|
str = str.replace(/\.zip::/, `.zip/`);
|
||||||
// So in order to convert it back, we use .* to match all the thing
|
// The path for coc-nvim is in format of /<pwd>/zipfile:/<pwd>/.yarn/...
|
||||||
// before `zipfile:`
|
// So in order to convert it back, we use .* to match all the thing
|
||||||
return process.platform === `win32`
|
// before `zipfile:`
|
||||||
? str.replace(/^.*zipfile:\//, ``)
|
return process.platform === `win32`
|
||||||
: str.replace(/^.*zipfile:/, ``);
|
? str.replace(/^.*zipfile:\//, ``)
|
||||||
} break;
|
: str.replace(/^.*zipfile:/, ``);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case `neovim`: {
|
case `neovim`:
|
||||||
str = str.replace(/\.zip::/, `.zip/`);
|
{
|
||||||
// The path for neovim is in format of zipfile:///<pwd>/.yarn/...
|
str = str.replace(/\.zip::/, `.zip/`);
|
||||||
return str.replace(/^zipfile:\/\//, ``);
|
// The path for neovim is in format of zipfile:///<pwd>/.yarn/...
|
||||||
} break;
|
return str.replace(/^zipfile:\/\//, ``);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case `vscode`:
|
case `vscode`:
|
||||||
default: {
|
default:
|
||||||
return str.replace(/^\^?(zip:|\/zip(\/ts-nul-authority)?)\/+/, process.platform === `win32` ? `` : `/`)
|
{
|
||||||
} break;
|
return str.replace(
|
||||||
|
/^\^?(zip:|\/zip(\/ts-nul-authority)?)\/+/,
|
||||||
|
process.platform === `win32` ? `` : `/`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -150,8 +183,9 @@ const moduleWrapper = tsserver => {
|
|||||||
// TypeScript already does local loads and if this code is running the user trusts the workspace
|
// TypeScript already does local loads and if this code is running the user trusts the workspace
|
||||||
// https://github.com/microsoft/vscode/issues/45856
|
// https://github.com/microsoft/vscode/issues/45856
|
||||||
const ConfiguredProject = tsserver.server.ConfiguredProject;
|
const ConfiguredProject = tsserver.server.ConfiguredProject;
|
||||||
const {enablePluginsWithOptions: originalEnablePluginsWithOptions} = ConfiguredProject.prototype;
|
const { enablePluginsWithOptions: originalEnablePluginsWithOptions } =
|
||||||
ConfiguredProject.prototype.enablePluginsWithOptions = function() {
|
ConfiguredProject.prototype;
|
||||||
|
ConfiguredProject.prototype.enablePluginsWithOptions = function () {
|
||||||
this.projectService.allowLocalPluginLoads = true;
|
this.projectService.allowLocalPluginLoads = true;
|
||||||
return originalEnablePluginsWithOptions.apply(this, arguments);
|
return originalEnablePluginsWithOptions.apply(this, arguments);
|
||||||
};
|
};
|
||||||
@ -161,12 +195,13 @@ const moduleWrapper = tsserver => {
|
|||||||
// like an absolute path of ours and normalize it.
|
// like an absolute path of ours and normalize it.
|
||||||
|
|
||||||
const Session = tsserver.server.Session;
|
const Session = tsserver.server.Session;
|
||||||
const {onMessage: originalOnMessage, send: originalSend} = Session.prototype;
|
const { onMessage: originalOnMessage, send: originalSend } =
|
||||||
|
Session.prototype;
|
||||||
let hostInfo = `unknown`;
|
let hostInfo = `unknown`;
|
||||||
|
|
||||||
Object.assign(Session.prototype, {
|
Object.assign(Session.prototype, {
|
||||||
onMessage(/** @type {string | object} */ message) {
|
onMessage(/** @type {string | object} */ message) {
|
||||||
const isStringMessage = typeof message === 'string';
|
const isStringMessage = typeof message === "string";
|
||||||
const parsedMessage = isStringMessage ? JSON.parse(message) : message;
|
const parsedMessage = isStringMessage ? JSON.parse(message) : message;
|
||||||
|
|
||||||
if (
|
if (
|
||||||
@ -177,10 +212,12 @@ const moduleWrapper = tsserver => {
|
|||||||
) {
|
) {
|
||||||
hostInfo = parsedMessage.arguments.hostInfo;
|
hostInfo = parsedMessage.arguments.hostInfo;
|
||||||
if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK) {
|
if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK) {
|
||||||
const [, major, minor] = (process.env.VSCODE_IPC_HOOK.match(
|
const [, major, minor] = (
|
||||||
// The RegExp from https://semver.org/ but without the caret at the start
|
process.env.VSCODE_IPC_HOOK.match(
|
||||||
/(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/
|
// The RegExp from https://semver.org/ but without the caret at the start
|
||||||
) ?? []).map(Number)
|
/(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/
|
||||||
|
) ?? []
|
||||||
|
).map(Number);
|
||||||
|
|
||||||
if (major === 1) {
|
if (major === 1) {
|
||||||
if (minor < 61) {
|
if (minor < 61) {
|
||||||
@ -194,21 +231,31 @@ const moduleWrapper = tsserver => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const processedMessageJSON = JSON.stringify(parsedMessage, (key, value) => {
|
const processedMessageJSON = JSON.stringify(
|
||||||
return typeof value === 'string' ? fromEditorPath(value) : value;
|
parsedMessage,
|
||||||
});
|
(key, value) => {
|
||||||
|
return typeof value === "string" ? fromEditorPath(value) : value;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
return originalOnMessage.call(
|
return originalOnMessage.call(
|
||||||
this,
|
this,
|
||||||
isStringMessage ? processedMessageJSON : JSON.parse(processedMessageJSON)
|
isStringMessage
|
||||||
|
? processedMessageJSON
|
||||||
|
: JSON.parse(processedMessageJSON)
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
send(/** @type {any} */ msg) {
|
send(/** @type {any} */ msg) {
|
||||||
return originalSend.call(this, JSON.parse(JSON.stringify(msg, (key, value) => {
|
return originalSend.call(
|
||||||
return typeof value === `string` ? toEditorPath(value) : value;
|
this,
|
||||||
})));
|
JSON.parse(
|
||||||
}
|
JSON.stringify(msg, (key, value) => {
|
||||||
|
return typeof value === `string` ? toEditorPath(value) : value;
|
||||||
|
})
|
||||||
|
)
|
||||||
|
);
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
return tsserver;
|
return tsserver;
|
||||||
|
6
.yarn/sdks/typescript/lib/typescript.js
vendored
6
.yarn/sdks/typescript/lib/typescript.js
vendored
@ -1,8 +1,8 @@
|
|||||||
#!/usr/bin/env node
|
#!/usr/bin/env node
|
||||||
|
|
||||||
const {existsSync} = require(`fs`);
|
const { existsSync } = require(`fs`);
|
||||||
const {createRequire} = require(`module`);
|
const { createRequire } = require(`module`);
|
||||||
const {resolve} = require(`path`);
|
const { resolve } = require(`path`);
|
||||||
|
|
||||||
const relPnpApiPath = "../../../../.pnp.cjs";
|
const relPnpApiPath = "../../../../.pnp.cjs";
|
||||||
|
|
||||||
|
@ -1,18 +1,17 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
<meta name="theme-color" content="#000000" />
|
||||||
|
<meta name="description" content="Nostr live streaming" />
|
||||||
|
<link rel="apple-touch-icon" href="/logo.png" />
|
||||||
|
<link rel="icon" href="/favicon.ico" />
|
||||||
|
<link rel="manifest" href="/manifest.json" />
|
||||||
|
<title>zap.stream</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
<head>
|
<body>
|
||||||
<meta charset="utf-8" />
|
<div id="root"></div>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
</body>
|
||||||
<meta name="theme-color" content="#000000" />
|
|
||||||
<meta name="description" content="Nostr live streaming" />
|
|
||||||
<link rel="apple-touch-icon" href="/logo.png" />
|
|
||||||
<link rel="icon" href="/favicon.ico" />
|
|
||||||
<link rel="manifest" href="/manifest.json" />
|
|
||||||
<title>zap.stream</title>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<div id="root"></div>
|
|
||||||
</body>
|
|
||||||
</html>
|
</html>
|
||||||
|
@ -1,3 +1 @@
|
|||||||
[
|
[{ "id": "nsfw", "text": "NSFW" }]
|
||||||
{ "id": "nsfw", "text": "NSFW" }
|
|
||||||
]
|
|
||||||
|
@ -210,16 +210,16 @@ export function ChatMessage({
|
|||||||
style={
|
style={
|
||||||
isTablet
|
isTablet
|
||||||
? {
|
? {
|
||||||
display: showZapDialog || isHovering ? "flex" : "none",
|
display: showZapDialog || isHovering ? "flex" : "none",
|
||||||
}
|
}
|
||||||
: {
|
: {
|
||||||
position: "fixed",
|
position: "fixed",
|
||||||
top: topOffset ? topOffset - 12 : 0,
|
top: topOffset ? topOffset - 12 : 0,
|
||||||
left: leftOffset ? leftOffset - 32 : 0,
|
left: leftOffset ? leftOffset - 32 : 0,
|
||||||
opacity: showZapDialog || isHovering ? 1 : 0,
|
opacity: showZapDialog || isHovering ? 1 : 0,
|
||||||
pointerEvents:
|
pointerEvents:
|
||||||
showZapDialog || isHovering ? "auto" : "none",
|
showZapDialog || isHovering ? "auto" : "none",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
{zapTarget && (
|
{zapTarget && (
|
||||||
|
@ -36,7 +36,11 @@ function NewStream({ ev, onFinish }: StreamEditorProps) {
|
|||||||
onFinish={(ex) => {
|
onFinish={(ex) => {
|
||||||
currentProvider.updateStreamInfo(ex);
|
currentProvider.updateStreamInfo(ex);
|
||||||
if (!ev) {
|
if (!ev) {
|
||||||
if (findTag(ex, "content-warning") && __XXX_HOST && __XXX === false) {
|
if (
|
||||||
|
findTag(ex, "content-warning") &&
|
||||||
|
__XXX_HOST &&
|
||||||
|
__XXX === false
|
||||||
|
) {
|
||||||
location.href = `${__XXX_HOST}/${eventLink(ex)}`;
|
location.href = `${__XXX_HOST}/${eventLink(ex)}`;
|
||||||
} else {
|
} else {
|
||||||
navigate(`/${eventLink(ex)}`, {
|
navigate(`/${eventLink(ex)}`, {
|
||||||
|
@ -46,7 +46,8 @@ export function SendZaps({
|
|||||||
const UsdRate = 28_000;
|
const UsdRate = 28_000;
|
||||||
|
|
||||||
const satsAmounts = [
|
const satsAmounts = [
|
||||||
21, 69, 121, 221, 420, 1_000, 2_100, 5_000, 6_666, 10_000, 21_000, 42_000, 69_000, 100_000, 210_000, 500_000, 1_000_000,
|
21, 69, 121, 221, 420, 1_000, 2_100, 5_000, 6_666, 10_000, 21_000, 42_000,
|
||||||
|
69_000, 100_000, 210_000, 500_000, 1_000_000,
|
||||||
];
|
];
|
||||||
const usdAmounts = [0.05, 0.5, 2, 5, 10, 50, 100, 200];
|
const usdAmounts = [0.05, 0.5, 2, 5, 10, 50, 100, 200];
|
||||||
const [isFiat, setIsFiat] = useState(false);
|
const [isFiat, setIsFiat] = useState(false);
|
||||||
|
@ -1,72 +1,84 @@
|
|||||||
/* latin-ext */
|
/* latin-ext */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Outfit';
|
font-family: "Outfit";
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
src: url(outfit_400_latin-ext.woff2) format('woff2');
|
src: url(outfit_400_latin-ext.woff2) format("woff2");
|
||||||
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF,
|
||||||
|
U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||||
}
|
}
|
||||||
/* latin */
|
/* latin */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Outfit';
|
font-family: "Outfit";
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
src: url(outfit_400_latin.woff2) format('woff2');
|
src: url(outfit_400_latin.woff2) format("woff2");
|
||||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
|
||||||
|
U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191,
|
||||||
|
U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||||
}
|
}
|
||||||
/* latin-ext */
|
/* latin-ext */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Outfit';
|
font-family: "Outfit";
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
src: url(outfit_500_latin-ext.woff2) format('woff2');
|
src: url(outfit_500_latin-ext.woff2) format("woff2");
|
||||||
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF,
|
||||||
|
U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||||
}
|
}
|
||||||
/* latin */
|
/* latin */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Outfit';
|
font-family: "Outfit";
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
src: url(outfit_500_latin.woff2) format('woff2');
|
src: url(outfit_500_latin.woff2) format("woff2");
|
||||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
|
||||||
|
U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191,
|
||||||
|
U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||||
}
|
}
|
||||||
/* latin-ext */
|
/* latin-ext */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Outfit';
|
font-family: "Outfit";
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
src: url(outfit_600_latin-ext.woff2) format('woff2');
|
src: url(outfit_600_latin-ext.woff2) format("woff2");
|
||||||
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF,
|
||||||
|
U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||||
}
|
}
|
||||||
/* latin */
|
/* latin */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Outfit';
|
font-family: "Outfit";
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
src: url(outfit_600_latin.woff2) format('woff2');
|
src: url(outfit_600_latin.woff2) format("woff2");
|
||||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
|
||||||
|
U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191,
|
||||||
|
U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||||
}
|
}
|
||||||
/* latin-ext */
|
/* latin-ext */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Outfit';
|
font-family: "Outfit";
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
src: url(outfit_700_latin-ext.woff2) format('woff2');
|
src: url(outfit_700_latin-ext.woff2) format("woff2");
|
||||||
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF,
|
||||||
|
U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||||
}
|
}
|
||||||
/* latin */
|
/* latin */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'Outfit';
|
font-family: "Outfit";
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
font-display: swap;
|
font-display: swap;
|
||||||
src: url(outfit_700_latin.woff2) format('woff2');
|
src: url(outfit_700_latin.woff2) format("woff2");
|
||||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
|
||||||
|
U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191,
|
||||||
|
U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ const config = {
|
|||||||
{ from: "public/robots.txt" },
|
{ from: "public/robots.txt" },
|
||||||
{ from: "public/icons.svg" },
|
{ from: "public/icons.svg" },
|
||||||
{ from: "public/logo.png" },
|
{ from: "public/logo.png" },
|
||||||
{ from: "_headers" }
|
{ from: "_headers" },
|
||||||
],
|
],
|
||||||
}),
|
}),
|
||||||
new HtmlWebpackPlugin({
|
new HtmlWebpackPlugin({
|
||||||
@ -68,8 +68,8 @@ const config = {
|
|||||||
}),
|
}),
|
||||||
new webpack.DefinePlugin({
|
new webpack.DefinePlugin({
|
||||||
__XXX: process.env["__XXX"] || JSON.stringify(false),
|
__XXX: process.env["__XXX"] || JSON.stringify(false),
|
||||||
__XXX_HOST: JSON.stringify("https://xxzap.com")
|
__XXX_HOST: JSON.stringify("https://xxzap.com"),
|
||||||
})
|
}),
|
||||||
],
|
],
|
||||||
module: {
|
module: {
|
||||||
rules: [
|
rules: [
|
||||||
@ -89,9 +89,12 @@ const config = {
|
|||||||
babelrc: false,
|
babelrc: false,
|
||||||
configFile: false,
|
configFile: false,
|
||||||
presets: [
|
presets: [
|
||||||
["@babel/preset-env", {
|
[
|
||||||
targets: "defaults"
|
"@babel/preset-env",
|
||||||
}],
|
{
|
||||||
|
targets: "defaults",
|
||||||
|
},
|
||||||
|
],
|
||||||
["@babel/preset-react", { runtime: "automatic" }],
|
["@babel/preset-react", { runtime: "automatic" }],
|
||||||
"@babel/preset-typescript",
|
"@babel/preset-typescript",
|
||||||
],
|
],
|
||||||
@ -106,7 +109,7 @@ const config = {
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
require.resolve("ts-loader")
|
require.resolve("ts-loader"),
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -148,7 +151,7 @@ const config = {
|
|||||||
aliasFields: ["browser"],
|
aliasFields: ["browser"],
|
||||||
extensions: ["...", ".tsx", ".ts", ".jsx", ".js"],
|
extensions: ["...", ".tsx", ".ts", ".jsx", ".js"],
|
||||||
modules: ["...", __dirname, path.resolve(__dirname, "src")],
|
modules: ["...", __dirname, path.resolve(__dirname, "src")],
|
||||||
fallback: { "crypto": false }
|
fallback: { crypto: false },
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user