diff --git a/.eslintrc.json b/.eslintrc.json index 66b32c6ce9..1438fa7729 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -23,6 +23,7 @@ "prefer-const": 2, "no-unused-vars": "off", "indent": "off", + "no-mixed-operators": "off", "no-dupe-class-members": "off", "no-useless-constructor": "off", "@typescript-eslint/indent": ["error", 2], diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4d9ed10b8c..8c3ef8f97b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -5,8 +5,19 @@ jobs: name: Test strategy: matrix: - os: [ubuntu-latest, macos-latest] + os: [ubuntu-latest] timezone: [Etc/GMT, Asia/Shanghai, America/New_York] + node-version: [22] + include: + - os: macos-latest + timezone: America/New_York + node-versoin: 22 + - os: ubuntu-latest + timezone: Etc/GMT + node-version: 16 + - os: ubuntu-latest + timezone: Asia/Shanghai + node-version: 14 runs-on: ${{ matrix.os }} steps: - name: Checkout @@ -16,7 +27,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v3 with: - node-version: '20' + node-version: ${{ matrix.node-version }} - name: Install dependencies run: npm ci - name: Download artifacts diff --git a/rollup.config.mjs b/rollup.config.mjs index 87b6edbce1..7c32fa4951 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -50,6 +50,10 @@ const browserStream = { delimiters: ['', ''], './streamed-emitter': '../build/streamed-emitter-browser' } +const browserPerf = { + include: ['./src/context/context.ts', './src/render/render.ts'], + 'node:perf_hooks': '../build/perf_hooks-browser' +} const esmRequire = { include: './src/fs/node.ts', delimiters: ['', ''], @@ -95,6 +99,7 @@ const browserEsm = { versionInjection, replace(browserFS), replace(browserStream), + replace(browserPerf), typescript(tsconfig('es6')) ], treeshake, @@ -113,6 +118,7 @@ const browserUmd = { versionInjection, replace(browserFS), replace(browserStream), + replace(browserPerf), typescript(tsconfig('es5')) ], treeshake, @@ -131,6 +137,7 @@ const browserMin = { versionInjection, replace(browserFS), replace(browserStream), + replace(browserPerf), typescript(tsconfig('es5')), uglify() ], diff --git a/src/build/perf_hooks-browser.ts b/src/build/perf_hooks-browser.ts new file mode 100644 index 0000000000..d68935436d --- /dev/null +++ b/src/build/perf_hooks-browser.ts @@ -0,0 +1,5 @@ +const polyfill = { + now: () => Date.now() +} + +export const performance = typeof window === 'object' && window.performance || polyfill diff --git a/src/parser/parser.spec.ts b/src/parser/parser.spec.ts new file mode 100644 index 0000000000..ca436338fa --- /dev/null +++ b/src/parser/parser.spec.ts @@ -0,0 +1,19 @@ +import { Parser } from './parser' +import { Liquid, TokenKind } from '..' + +describe('Parser', () => { + it('should coerce input to string', () => { + const parser = new Parser(new Liquid()) + const templates = parser.parse({} as any) + expect(templates.length).toEqual(1) + expect(templates[0]).toMatchObject({ + str: '[object Object]', + token: { + kind: TokenKind.HTML, + input: '[object Object]', + begin: 0, + end: 15 + } + }) + }) +}) diff --git a/test/e2e/drop.spec.ts b/test/e2e/drop.spec.ts index c1950ba603..d60b425a54 100644 --- a/test/e2e/drop.spec.ts +++ b/test/e2e/drop.spec.ts @@ -1,8 +1,7 @@ -import { Liquid } from '../../src/liquid' -import { Drop } from '../../src/drop/drop' +import { Drop, Liquid } from '../..' class SettingsDrop extends Drop { - private foo = 'FOO' + public foo = 'FOO' public bar () { return 'BAR' }