Skip to content

Commit 8fa8b33

Browse files
committed
Add support for webpack #24
1 parent 3d33f69 commit 8fa8b33

File tree

9 files changed

+56
-16
lines changed

9 files changed

+56
-16
lines changed

.github/workflows/ci.yaml

+36-6
Original file line numberDiff line numberDiff line change
@@ -66,14 +66,46 @@ jobs:
6666
working-directory: ./sample
6767
run: yarn build
6868

69+
bundle_with_nextjs:
70+
needs: build
71+
name: Test bundling with Next.js (webpack)
72+
runs-on: ubuntu-latest
73+
steps:
74+
- name: Install Node.js
75+
uses: actions/setup-node@v3
76+
with:
77+
node-version: 18
78+
- name: Create a Next.js project
79+
run: yarn create next-app sample --ts --eslint --tailwind --src-dir --app --import-alias="@/*"
80+
- name: Download package
81+
uses: actions/download-artifact@v3
82+
with:
83+
name: package.tgz
84+
- name: Add package
85+
working-directory: ./sample
86+
run: yarn add $(ls ../decs-typeschema-*.tgz) zod
87+
- name: Use package
88+
working-directory: ./sample
89+
run: |
90+
echo "
91+
import {validate} from '@decs/typeschema';
92+
import {z} from 'zod';
93+
94+
export default function Page() {
95+
validate(z.string(), "hello").then(console.log);
96+
}
97+
" > src/app/page.tsx
98+
- name: Bundle project
99+
working-directory: ./sample
100+
run: yarn build
101+
69102
check_for_version_upgrade:
70103
name: Check for version upgrade
71104
if: |
72105
github.event_name == 'push' ||
73106
github.event.pull_request.head.repo.owner.login == github.event.pull_request.base.repo.owner.login
74107
runs-on: ubuntu-latest
75-
needs:
76-
- bundle_with_vite
108+
needs: [bundle_with_vite, bundle_with_nextjs]
77109
outputs:
78110
from_version: ${{steps.check.outputs.from_version}}
79111
to_version: ${{steps.check.outputs.to_version}}
@@ -89,8 +121,7 @@ jobs:
89121
publish_to_deno:
90122
name: Publish to Deno
91123
runs-on: ubuntu-latest
92-
needs:
93-
- check_for_version_upgrade
124+
needs: check_for_version_upgrade
94125
if: |
95126
needs.check_for_version_upgrade.outputs.is_upgraded_version == 'true' &&
96127
(
@@ -142,8 +173,7 @@ jobs:
142173
publish_to_npm:
143174
name: Publish to NPM
144175
runs-on: ubuntu-latest
145-
needs:
146-
- check_for_version_upgrade
176+
needs: check_for_version_upgrade
147177
if: |
148178
needs.check_for_version_upgrade.outputs.is_upgraded_version == 'true' &&
149179
(

src/adapters/ajv.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export interface AjvResolver extends Resolver {
1010
}
1111

1212
export const fetchModule = /* @__PURE__ */ memoize(async () => {
13-
const {default: Ajv} = await import('ajv');
13+
const {default: Ajv} = await import(/* webpackIgnore: true */ 'ajv');
1414
return new Ajv();
1515
});
1616

src/adapters/deepkit.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export interface DeepkitResolver extends Resolver {
1010
}
1111

1212
export const fetchModule = /* @__PURE__ */ memoize(async () => {
13-
const {validate} = await import('@deepkit/type');
13+
const {validate} = await import(/* webpackIgnore: true */ '@deepkit/type');
1414
return {validate};
1515
});
1616

src/adapters/effect.ts

+9-3
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,15 @@ export interface EffectResolver extends Resolver {
1919
}
2020

2121
export const fetchModule = /* @__PURE__ */ memoize(async () => {
22-
const {isRight} = await import('@effect/data/Either');
23-
const {isSchema, parseEither} = await import('@effect/schema/Schema');
24-
const {formatErrors} = await import('@effect/schema/TreeFormatter');
22+
const {isRight} = await import(
23+
/* webpackIgnore: true */ '@effect/data/Either'
24+
);
25+
const {isSchema, parseEither} = await import(
26+
/* webpackIgnore: true */ '@effect/schema/Schema'
27+
);
28+
const {formatErrors} = await import(
29+
/* webpackIgnore: true */ '@effect/schema/TreeFormatter'
30+
);
2531
return {formatErrors, isRight, isSchema, parseEither};
2632
});
2733

src/adapters/io-ts.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export interface IoTsResolver extends Resolver {
1212
}
1313

1414
export const fetchModule = /* @__PURE__ */ memoize(async () => {
15-
const {isRight} = await import('fp-ts/Either');
15+
const {isRight} = await import(/* webpackIgnore: true */ 'fp-ts/Either');
1616
return {isRight};
1717
});
1818

src/adapters/ow.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ export interface OwResolver extends Resolver {
1212
}
1313

1414
export const fetchModule = /* @__PURE__ */ memoize(async () => {
15-
const {default: ow, ArgumentError} = await import('ow');
15+
const {default: ow, ArgumentError} = await import(
16+
/* webpackIgnore: true */ 'ow'
17+
);
1618
return {ArgumentError, ow};
1719
});
1820

src/adapters/typebox.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ export interface TypeBoxResolver extends Resolver {
1212
}
1313

1414
export const fetchModule = /* @__PURE__ */ memoize(async () => {
15-
const {TypeCompiler} = await import('@sinclair/typebox/compiler');
15+
const {TypeCompiler} = await import(
16+
/* webpackIgnore: true */ '@sinclair/typebox/compiler'
17+
);
1618
return {TypeCompiler};
1719
});
1820

src/adapters/valibot.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export interface ValibotResolver extends Resolver {
1616
}
1717

1818
export const fetchModule = /* @__PURE__ */ memoize(async () => {
19-
const {safeParseAsync} = await import('valibot');
19+
const {safeParseAsync} = await import(/* webpackIgnore: true */ 'valibot');
2020
return {safeParseAsync};
2121
});
2222

src/adapters/yup.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export interface YupResolver extends Resolver {
1212
}
1313

1414
export const fetchModule = /* @__PURE__ */ memoize(async () => {
15-
const {ValidationError} = await import('yup');
15+
const {ValidationError} = await import(/* webpackIgnore: true */ 'yup');
1616
return {ValidationError};
1717
});
1818

0 commit comments

Comments
 (0)