diff --git a/integrations/vanilla/package.json b/integrations/vanilla/package.json new file mode 100644 index 0000000..6dc050d --- /dev/null +++ b/integrations/vanilla/package.json @@ -0,0 +1,11 @@ +{ + "name": "vanilla-integration", + "private": true, + "type": "module", + "scripts": { + "test:build": "vite build && vitest" + }, + "devDependencies": { + "@tanstack/config": "<1.0.0" + } +} diff --git a/integrations/vanilla/snap/cjs/index.cjs b/integrations/vanilla/snap/cjs/index.cjs new file mode 100644 index 0000000..800870c --- /dev/null +++ b/integrations/vanilla/snap/cjs/index.cjs @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); +const utils = require("./utils.cjs"); +exports.optionalChaining = utils.optionalChaining; +//# sourceMappingURL=index.cjs.map diff --git a/integrations/vanilla/snap/cjs/index.cjs.map b/integrations/vanilla/snap/cjs/index.cjs.map new file mode 100644 index 0000000..32a0c91 --- /dev/null +++ b/integrations/vanilla/snap/cjs/index.cjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"} \ No newline at end of file diff --git a/integrations/vanilla/snap/cjs/index.d.cts b/integrations/vanilla/snap/cjs/index.d.cts new file mode 100644 index 0000000..04bca77 --- /dev/null +++ b/integrations/vanilla/snap/cjs/index.d.cts @@ -0,0 +1 @@ +export * from './utils'; diff --git a/integrations/vanilla/snap/cjs/utils.cjs b/integrations/vanilla/snap/cjs/utils.cjs new file mode 100644 index 0000000..4e19e80 --- /dev/null +++ b/integrations/vanilla/snap/cjs/utils.cjs @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); +const optionalChaining = (data) => { + var _a; + return (_a = data == null ? void 0 : data.maybe) == null ? void 0 : _a.property; +}; +exports.optionalChaining = optionalChaining; +//# sourceMappingURL=utils.cjs.map diff --git a/integrations/vanilla/snap/cjs/utils.cjs.map b/integrations/vanilla/snap/cjs/utils.cjs.map new file mode 100644 index 0000000..7681dae --- /dev/null +++ b/integrations/vanilla/snap/cjs/utils.cjs.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.cjs","sources":["../../src/utils.ts"],"sourcesContent":["export const optionalChaining = (data: any) => {\n return data?.maybe?.property\n}\n"],"names":[],"mappings":";;AAAa,MAAA,mBAAmB,CAAC,SAAc;;AAC7C,UAAO,kCAAM,UAAN,mBAAa;AACtB;;"} \ No newline at end of file diff --git a/integrations/vanilla/snap/cjs/utils.d.cts b/integrations/vanilla/snap/cjs/utils.d.cts new file mode 100644 index 0000000..bb2ed12 --- /dev/null +++ b/integrations/vanilla/snap/cjs/utils.d.cts @@ -0,0 +1 @@ +export declare const optionalChaining: (data: any) => any; diff --git a/integrations/vanilla/snap/esm/index.d.ts b/integrations/vanilla/snap/esm/index.d.ts new file mode 100644 index 0000000..04bca77 --- /dev/null +++ b/integrations/vanilla/snap/esm/index.d.ts @@ -0,0 +1 @@ +export * from './utils'; diff --git a/integrations/vanilla/snap/esm/index.js b/integrations/vanilla/snap/esm/index.js new file mode 100644 index 0000000..a1980dc --- /dev/null +++ b/integrations/vanilla/snap/esm/index.js @@ -0,0 +1,5 @@ +import { optionalChaining } from "./utils.js"; +export { + optionalChaining +}; +//# sourceMappingURL=index.js.map diff --git a/integrations/vanilla/snap/esm/index.js.map b/integrations/vanilla/snap/esm/index.js.map new file mode 100644 index 0000000..594ae09 --- /dev/null +++ b/integrations/vanilla/snap/esm/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"} \ No newline at end of file diff --git a/integrations/vanilla/snap/esm/utils.d.ts b/integrations/vanilla/snap/esm/utils.d.ts new file mode 100644 index 0000000..bb2ed12 --- /dev/null +++ b/integrations/vanilla/snap/esm/utils.d.ts @@ -0,0 +1 @@ +export declare const optionalChaining: (data: any) => any; diff --git a/integrations/vanilla/snap/esm/utils.js b/integrations/vanilla/snap/esm/utils.js new file mode 100644 index 0000000..cf3866d --- /dev/null +++ b/integrations/vanilla/snap/esm/utils.js @@ -0,0 +1,8 @@ +const optionalChaining = (data) => { + var _a; + return (_a = data == null ? void 0 : data.maybe) == null ? void 0 : _a.property; +}; +export { + optionalChaining +}; +//# sourceMappingURL=utils.js.map diff --git a/integrations/vanilla/snap/esm/utils.js.map b/integrations/vanilla/snap/esm/utils.js.map new file mode 100644 index 0000000..2125a48 --- /dev/null +++ b/integrations/vanilla/snap/esm/utils.js.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.js","sources":["../../src/utils.ts"],"sourcesContent":["export const optionalChaining = (data: any) => {\n return data?.maybe?.property\n}\n"],"names":[],"mappings":"AAAa,MAAA,mBAAmB,CAAC,SAAc;AAAlC;AACX,UAAO,kCAAM,UAAN,mBAAa;AACtB;"} \ No newline at end of file diff --git a/integrations/vanilla/src/index.ts b/integrations/vanilla/src/index.ts new file mode 100644 index 0000000..9c56149 --- /dev/null +++ b/integrations/vanilla/src/index.ts @@ -0,0 +1 @@ +export * from './utils' diff --git a/integrations/vanilla/src/utils.ts b/integrations/vanilla/src/utils.ts new file mode 100644 index 0000000..7ea119a --- /dev/null +++ b/integrations/vanilla/src/utils.ts @@ -0,0 +1,3 @@ +export const optionalChaining = (data: any) => { + return data?.maybe?.property +} diff --git a/integrations/vanilla/tests/build.test.ts b/integrations/vanilla/tests/build.test.ts new file mode 100644 index 0000000..97fd8a9 --- /dev/null +++ b/integrations/vanilla/tests/build.test.ts @@ -0,0 +1,41 @@ +import { readFileSync, readdirSync } from 'node:fs' +import { fileURLToPath } from 'node:url' +import { dirname, resolve } from 'node:path' +import { describe, expect, it } from 'vitest' + +const __dirname = dirname(fileURLToPath(import.meta.url)) +const rootDir = resolve(__dirname, '..') + +const esmExtensions = ['.js', '.js.map', '.d.ts'] +const cjsExtensions = ['.cjs', '.cjs.map', '.d.cts'] + +const files = ['index', 'utils'] + +describe('Check Vanilla build output', () => { + it('should output the same file structure', () => { + const distFiles = readdirSync(`${rootDir}/dist`, { recursive: true }) + const snapFiles = readdirSync(`${rootDir}/snap`, { recursive: true }) + + expect(distFiles).toEqual(snapFiles) + }) + + it('should build the same ESM output', () => { + files.forEach((file) => { + esmExtensions.forEach((ext) => { + expect( + readFileSync(`${rootDir}/dist/esm/${file}${ext}`).toString(), + ).toMatchFileSnapshot(`${rootDir}/snap/esm/${file}${ext}`) + }) + }) + }) + + it('should build the same CJS output', () => { + files.forEach((file) => { + cjsExtensions.forEach((ext) => { + expect( + readFileSync(`${rootDir}/dist/cjs/${file}${ext}`).toString(), + ).toMatchFileSnapshot(`${rootDir}/snap/cjs/${file}${ext}`) + }) + }) + }) +}) diff --git a/integrations/vanilla/tsconfig.json b/integrations/vanilla/tsconfig.json new file mode 100644 index 0000000..387c1a7 --- /dev/null +++ b/integrations/vanilla/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src", "tests", "vite.config.ts"] +} diff --git a/integrations/vanilla/vite.config.ts b/integrations/vanilla/vite.config.ts new file mode 100644 index 0000000..8718330 --- /dev/null +++ b/integrations/vanilla/vite.config.ts @@ -0,0 +1,17 @@ +import { mergeConfig, defineConfig } from 'vitest/config' +import { tanstackBuildConfig } from '@tanstack/config/build' + +const config = defineConfig({ + test: { + name: 'vanilla-integration', + watch: false, + }, +}) + +export default mergeConfig( + config, + tanstackBuildConfig({ + entry: 'src/index.ts', + srcDir: 'src', + }), +) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a971705..7e5e7a6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -174,6 +174,12 @@ importers: specifier: ^2.8.0 version: 2.8.0(solid-js@1.8.8)(vite@5.0.10) + integrations/vanilla: + devDependencies: + '@tanstack/config': + specifier: <1.0.0 + version: link:../.. + integrations/vue: dependencies: vue: