diff --git a/package.json b/package.json index 067de67c..ea232fdf 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "nullstack", - "version": "0.17.1", - "description": "Full-stack Javascript Components for one-dev armies", + "version": "0.17.2", + "description": "Full Stack Javascript Components for one-dev armies", "main": "nullstack.js", "author": "Mortaro", "repository": "github:nullstack/nullstack", @@ -32,7 +32,7 @@ "css-loader": "6.7.1", "dotenv": "8.6.0", "eslint-plugin-jest": "^27.1.6", - "eslint-plugin-nullstack": "^0.0.10", + "eslint-plugin-nullstack": "^0.0.11", "express": "4.18.1", "fs-extra": "10.1.0", "mini-css-extract-plugin": "2.6.0", diff --git a/tests/public/icon-144x000.png b/tests/public/icon-144x000.png new file mode 100644 index 00000000..a87f2a70 Binary files /dev/null and b/tests/public/icon-144x000.png differ diff --git a/tests/src/ContextProject.njs b/tests/src/ContextProject.njs index 1e5c9acc..558841ed 100644 --- a/tests/src/ContextProject.njs +++ b/tests/src/ContextProject.njs @@ -10,6 +10,7 @@ class ContextProject extends Nullstack { project.orientation = 'portrait' project.scope = '/' project.root = '/' + project.folderIcons = project.icons project.icons = { 72: '/icon-72x72.png', 144: '/icon-144x144.png', @@ -21,6 +22,7 @@ class ContextProject extends Nullstack { } render({ project }) { + const ignoredUnmatchedIcon = !Object.keys(project.folderIcons).find((key) => /icon-(\d+)x\1\.[a-zA-Z]+/.test(key)) return (
@@ -41,6 +43,7 @@ class ContextProject extends Nullstack {
+
) } diff --git a/tests/src/ContextProject.test.js b/tests/src/ContextProject.test.js index 5f048221..d6b116d1 100644 --- a/tests/src/ContextProject.test.js +++ b/tests/src/ContextProject.test.js @@ -72,6 +72,11 @@ describe('ContextProject', () => { expect(element).toBeTruthy() }) + test('icons that do not match the pattern are not loaded into icon key', async () => { + const element = await page.$('[data-ignored-unmatched-icon]') + expect(element).toBeTruthy() + }) + test('icons accepts an object with sizes', async () => { const element = await page.$('[data-icon-72="/icon-72x72.png"]') expect(element).toBeTruthy() diff --git a/tests/src/TypeScript.nts b/tests/src/TypeScript.nts index f57b65a4..3761dba8 100644 --- a/tests/src/TypeScript.nts +++ b/tests/src/TypeScript.nts @@ -1,5 +1,4 @@ -import Nullstack from 'nullstack' -import { NullstackClientContext } from 'nullstack/types/index.d.ts' +import Nullstack, { NullstackClientContext } from 'nullstack' interface TypeScriptClientContext extends NullstackClientContext { value: number; diff --git a/types/ClientContext.d.ts b/types/ClientContext.d.ts index 4c416cf7..f780bb89 100644 --- a/types/ClientContext.d.ts +++ b/types/ClientContext.d.ts @@ -1,11 +1,11 @@ -import { NullstackEnvironment } from './Environment.d.ts' -import { NullstackNode } from './JSX.d.ts' -import { NullstackPage } from './Page.d.ts' -import { NullstackParams } from './Params.d.ts' -import { NullstackProject } from './Project.d.ts' -import { NullstackRouter } from './Router.d.ts' -import { NullstackSettings } from './Settings.d.ts' -import { NullstackWorker } from './Worker.d.ts' +import { NullstackEnvironment } from './Environment' +import { NullstackNode } from './JSX' +import { NullstackPage } from './Page' +import { NullstackParams } from './Params' +import { NullstackProject } from './Project' +import { NullstackRouter } from './Router' +import { NullstackSettings } from './Settings' +import { NullstackWorker } from './Worker' /** * @see https://nullstack.app/context diff --git a/types/JSX.d.ts b/types/JSX.d.ts index 0a0a9442..00e0a51a 100644 --- a/types/JSX.d.ts +++ b/types/JSX.d.ts @@ -29,7 +29,7 @@ // Guilherme Correia // TypeScript Version: 2.8 -import { NullstackClientContext } from './ClientContext.d.ts' +import { NullstackClientContext } from './ClientContext' type NativeDragEvent = globalThis.DragEvent type NativeFocusEvent = globalThis.FocusEvent diff --git a/types/Plugin.d.ts b/types/Plugin.d.ts index a40b8534..bf680ac2 100644 --- a/types/Plugin.d.ts +++ b/types/Plugin.d.ts @@ -1,5 +1,5 @@ -import { NullstackClientContext } from './ClientContext.d.ts' -import { AllHTMLAttributes, NullstackAttributes } from './JSX.d.ts' +import { NullstackClientContext } from './ClientContext' +import { AllHTMLAttributes, NullstackAttributes } from './JSX' type NullstackPluginNode = { type: string | boolean diff --git a/types/ServerContext.d.ts b/types/ServerContext.d.ts index 3184da6b..8ec90589 100644 --- a/types/ServerContext.d.ts +++ b/types/ServerContext.d.ts @@ -1,9 +1,9 @@ -import { NullstackEnvironment } from './Environment.d.ts' -import { NullstackProject } from './Project.d.ts' -import { NullstackSecrets } from './Secrets.d.ts' -import { NullstackServer } from './Server.d.ts' -import { NullstackSettings } from './Settings.d.ts' -import { NullstackWorker } from './Worker.d.ts' +import { NullstackEnvironment } from './Environment' +import { NullstackProject } from './Project' +import { NullstackSecrets } from './Secrets' +import { NullstackServer } from './Server' +import { NullstackSettings } from './Settings' +import { NullstackWorker } from './Worker' /** * @see https://nullstack.app/context diff --git a/types/index.d.ts b/types/index.d.ts index 98488ac2..1a46f414 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -1,21 +1,21 @@ -import { NullstackClientContext } from './ClientContext.d.ts' -import { NullstackNode } from './JSX.d.ts' -import { NullstackPlugin } from './Plugin.d.ts' -import { NullstackServerContext } from './ServerContext.d.ts' - -export * from './ClientContext.d.ts' -export * from './Environment.d.ts' -export * from './Page.d.ts' -export * from './Params.d.ts' -export * from './Plugin.d.ts' -export * from './Project.d.ts' -export * from './Router.d.ts' -export * from './Secrets.d.ts' -export * from './Server.d.ts' -export * from './ServerContext.d.ts' -export * from './Settings.d.ts' -export * from './Worker.d.ts' -export * from './JSX.d.ts' +import { NullstackClientContext } from './ClientContext' +import { NullstackNode } from './JSX' +import { NullstackPlugin } from './Plugin' +import { NullstackServerContext } from './ServerContext' + +export * from './ClientContext' +export * from './Environment' +export * from './Page' +export * from './Params' +export * from './Plugin' +export * from './Project' +export * from './Router' +export * from './Secrets' +export * from './Server' +export * from './ServerContext' +export * from './Settings' +export * from './Worker' +export * from './JSX' /** * Functional component diff --git a/webpack.config.js b/webpack.config.js index 99930167..105e390c 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -219,8 +219,9 @@ function server(env, argv) { const icons = {} const publicFiles = readdirSync(path.join(dir, 'public')) const babel = argv.loader === 'babel' + const iconFileRegex = /icon-(\d+)x\1\.[a-zA-Z]+/ for (const file of publicFiles) { - if (file.startsWith('icon-')) { + if (iconFileRegex.test(file)) { const size = file.split('x')[1].split('.')[0] icons[size] = `/${file}` }