@ederzeel/nuxt-schema-form-nightly 0.1.0-28997068.dca840d → 0.1.0-28997862.98d468b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/dist/module.cjs +5 -0
  2. package/dist/module.d.mts +13 -0
  3. package/dist/module.d.ts +13 -0
  4. package/dist/module.json +13 -0
  5. package/dist/module.mjs +28 -0
  6. package/dist/runtime/types/utils.d.ts +27 -0
  7. package/dist/runtime/types/utils.js +0 -0
  8. package/dist/types.d.mts +1 -0
  9. package/dist/types.d.ts +1 -0
  10. package/package.json +13 -2
  11. package/.github/semantic.yml +0 -15
  12. package/.github/workflows/ci.yml +0 -79
  13. package/.github/workflows/release.yml +0 -62
  14. package/eslint.config.mjs +0 -73
  15. package/playground/app.vue +0 -5
  16. package/playground/assets/schema-custom.json +0 -111
  17. package/playground/assets/schema-easy.json +0 -16
  18. package/playground/assets/schema.json +0 -116
  19. package/playground/components/ColorMode.vue +0 -26
  20. package/playground/components/CustomInput.vue +0 -7
  21. package/playground/components/Editor.vue +0 -44
  22. package/playground/components/MultiStage.vue +0 -164
  23. package/playground/components/Stepper.vue +0 -63
  24. package/playground/components/TestForm.vue +0 -24
  25. package/playground/nuxt.config.ts +0 -13
  26. package/playground/package.json +0 -10
  27. package/playground/pages/index.vue +0 -22
  28. package/playground/plugins/monaco-editor.js +0 -19
  29. package/playground/tailwind.config.js +0 -1
  30. package/playground/tsconfig.json +0 -4
  31. package/pnpm-workspace.yaml +0 -2
  32. package/prettier.config.mjs +0 -8
  33. package/scripts/bump-nightly.ts +0 -25
  34. package/scripts/release-nightly.sh +0 -24
  35. package/scripts/release.sh +0 -21
  36. package/src/defaults.ts +0 -3
  37. package/src/module.ts +0 -35
  38. package/src/plugins/app-config.ts +0 -24
  39. package/src/plugins/components.ts +0 -68
  40. package/src/plugins/nuxt-environment.ts +0 -40
  41. package/src/runtime/types/utils.ts +0 -44
  42. package/src/unplugin.ts +0 -46
  43. package/tsconfig.json +0 -9
  44. /package/{src → dist}/runtime/components/SComponent.vue +0 -0
  45. /package/{src → dist}/runtime/components/SForm.vue +0 -0
  46. /package/{src → dist}/runtime/components/SInputField.vue +0 -0
  47. /package/{src → dist}/runtime/components/SObject.vue +0 -0
  48. /package/{src → dist}/runtime/components/SSelect.vue +0 -0
  49. /package/{src → dist}/runtime/components/STextarea.vue +0 -0
  50. /package/{src → dist}/runtime/components/SToggle.vue +0 -0
@@ -0,0 +1,5 @@
1
+ module.exports = function(...args) {
2
+ return import('./module.mjs').then(m => m.default.call(this, ...args))
3
+ }
4
+ const _meta = module.exports.meta = require('./module.json')
5
+ module.exports.getMeta = () => Promise.resolve(_meta)
@@ -0,0 +1,13 @@
1
+ import * as _nuxt_schema from '@nuxt/schema';
2
+
3
+ interface ModuleOptions {
4
+ /**
5
+ * Prefix for components
6
+ * @defaultValue `S`
7
+ * @link https://ui3.nuxt.dev/getting-started/installation/nuxt#prefix
8
+ */
9
+ prefix?: string;
10
+ }
11
+ declare const _default: _nuxt_schema.NuxtModule<ModuleOptions, ModuleOptions, false>;
12
+
13
+ export { type ModuleOptions, _default as default };
@@ -0,0 +1,13 @@
1
+ import * as _nuxt_schema from '@nuxt/schema';
2
+
3
+ interface ModuleOptions {
4
+ /**
5
+ * Prefix for components
6
+ * @defaultValue `S`
7
+ * @link https://ui3.nuxt.dev/getting-started/installation/nuxt#prefix
8
+ */
9
+ prefix?: string;
10
+ }
11
+ declare const _default: _nuxt_schema.NuxtModule<ModuleOptions, ModuleOptions, false>;
12
+
13
+ export { type ModuleOptions, _default as default };
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "SchemaForm",
3
+ "configKey": "schemaForm",
4
+ "compatibility": {
5
+ "nuxt": ">=3.13.1"
6
+ },
7
+ "docs": "https://ui3.nuxt.dev/getting-started/installation/nuxt",
8
+ "version": "0.1.0",
9
+ "builder": {
10
+ "@nuxt/module-builder": "0.8.4",
11
+ "unbuild": "unknown"
12
+ }
13
+ }
@@ -0,0 +1,28 @@
1
+ import { defineNuxtModule, createResolver, addComponentsDir } from '@nuxt/kit';
2
+
3
+ const defaultOptions = {
4
+ prefix: "S"
5
+ };
6
+
7
+ const module = defineNuxtModule({
8
+ meta: {
9
+ name: "SchemaForm",
10
+ configKey: "schemaForm",
11
+ compatibility: {
12
+ nuxt: ">=3.13.1"
13
+ },
14
+ docs: "https://ui3.nuxt.dev/getting-started/installation/nuxt"
15
+ },
16
+ defaults: defaultOptions,
17
+ setup(options, nuxt) {
18
+ const { resolve } = createResolver(import.meta.url);
19
+ nuxt.options.alias["#schema-form"] = resolve("./runtime");
20
+ addComponentsDir({
21
+ path: resolve("./runtime/components"),
22
+ prefix: options.prefix,
23
+ pathPrefix: false
24
+ });
25
+ }
26
+ });
27
+
28
+ export { module as default };
@@ -0,0 +1,27 @@
1
+ import type { VNode } from 'vue';
2
+ export interface TightMap<O = any> {
3
+ [key: string]: TightMap | O;
4
+ }
5
+ export type DeepPartial<T, O = any> = {
6
+ [P in keyof T]?: T[P] extends Array<string> ? string : T[P] extends object ? DeepPartial<T[P], O> : T[P];
7
+ } & {
8
+ [key: string]: O | TightMap<O>;
9
+ };
10
+ export type DynamicSlots<T extends {
11
+ slot?: string;
12
+ }, SlotProps, Slot = T['slot']> = Record<string, SlotProps> & (Slot extends string ? Record<Slot, SlotProps> : Record<string, never>);
13
+ export type GetObjectField<MaybeObject, Key extends string> = MaybeObject extends Record<string, any> ? MaybeObject[Key] : never;
14
+ export type PartialString<T> = {
15
+ [K in keyof T]?: string;
16
+ };
17
+ export type MaybeArrayOfArray<T> = T[] | T[][];
18
+ export type MaybeArrayOfArrayItem<I> = I extends Array<infer T> ? (T extends Array<infer U> ? U : T) : never;
19
+ export type SelectModelValue<T, V, M extends boolean = false, DV = T> = (T extends Record<string, any> ? (V extends keyof T ? T[V] : DV) : T) extends infer U ? M extends true ? U[] : U : never;
20
+ export type SelectItemKey<T> = T extends Record<string, any> ? keyof T : string;
21
+ export type SelectModelValueEmits<T, V, M extends boolean = false, DV = T> = {
22
+ 'update:modelValue': [payload: SelectModelValue<T, V, M, DV>];
23
+ };
24
+ export type StringOrVNode = string | VNode | (() => VNode);
25
+ export type EmitsToProps<T> = {
26
+ [K in keyof T as `on${Capitalize<string & K>}`]: T[K] extends [...args: infer Args] ? (...args: Args) => void : never;
27
+ };
File without changes
@@ -0,0 +1 @@
1
+ export { type ModuleOptions, default } from './module.js'
@@ -0,0 +1 @@
1
+ export { type ModuleOptions, default } from './module'
package/package.json CHANGED
@@ -1,9 +1,20 @@
1
1
  {
2
2
  "name": "@ederzeel/nuxt-schema-form-nightly",
3
- "version": "0.1.0-28997068.dca840d",
3
+ "version": "0.1.0-28997862.98d468b",
4
4
  "description": "A runtime form generator for nuxt",
5
- "main": "./dist/module.cjs",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/module.d.ts",
9
+ "import": "./dist/module.mjs",
10
+ "require": "./dist/module.cjs"
11
+ }
12
+ },
13
+ "main": "./dist/module.mjs",
6
14
  "types": "./dist/module.d.ts",
15
+ "files": [
16
+ "dist"
17
+ ],
7
18
  "scripts": {
8
19
  "build": "nuxt-module-build prepare && nuxt-module-build build .",
9
20
  "dev": "nuxi dev playground",
@@ -1,15 +0,0 @@
1
- titleAndCommits: true
2
- allowMergeCommits: false
3
- types:
4
- - feat
5
- - fix
6
- - docs
7
- - style
8
- - refactor
9
- - perf
10
- - test
11
- - build
12
- - ci
13
- - chore
14
- - revert
15
- - merge
@@ -1,79 +0,0 @@
1
- name: ci
2
- on:
3
- pull_request: {}
4
- push:
5
- branches:
6
- - main
7
-
8
- jobs:
9
- test:
10
- runs-on: ${{ matrix.os }}
11
- strategy:
12
- matrix:
13
- node-version: [18]
14
- os: [ubuntu-latest]
15
- steps:
16
- - uses: actions/checkout@v4
17
- with:
18
- fetch-depth: 0
19
- lfs: true
20
-
21
- - name: Setup pnpm
22
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
23
-
24
- - name: Install dependencies
25
- run: pnpm install --frozen-lockfile
26
-
27
- - name: Prepare
28
- run: pnpm run dev:prepare
29
-
30
- - name: Lint
31
- run: pnpm lint
32
-
33
- # - name: Install Playwright
34
- # run: pnpm playwright-core install chromium
35
-
36
- - name: Build
37
- run: pnpm build
38
-
39
- - name: Cache dist
40
- uses: actions/cache@v4
41
- with:
42
- path: dist
43
- key: ${{ matrix.os }}-node-v${{ matrix.node-version }}-${{ github.sha }}
44
-
45
- # - name: Test
46
- # run: pnpm test
47
-
48
- nightly-release:
49
- needs:
50
- - test
51
- runs-on: ${{ matrix.os }}
52
- strategy:
53
- matrix:
54
- node-version: [18]
55
- os: [ubuntu-latest]
56
- steps:
57
- - uses: actions/checkout@v4
58
-
59
- - name: Setup pnpm
60
- uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2 # v4.0.0
61
-
62
- - name: Install dependencies
63
- run: pnpm install --frozen-lockfile
64
-
65
- - name: Restore dist cache
66
- uses: actions/cache@v4
67
- with:
68
- path: dist
69
- key: ${{ matrix.os }}-node-v${{ matrix.node-version }}-${{ github.sha }}
70
-
71
- - name: Release Nightly
72
- if: |
73
- github.event_name == 'push' &&
74
- !startsWith(github.event.head_commit.message, '[skip-release]') &&
75
- !startsWith(github.event.head_commit.message, 'chore') &&
76
- !startsWith(github.event.head_commit.message, 'docs')
77
- run: ./scripts/release-nightly.sh
78
- env:
79
- NPM_TOKEN: ${{secrets.NPM_TOKEN}}
@@ -1,62 +0,0 @@
1
- name: Release
2
-
3
- # trigger by `git tag` push only via `yarn release`
4
- on:
5
- push:
6
- branches-ignore:
7
- - '**'
8
- tags:
9
- - 'v*'
10
-
11
- jobs:
12
- release:
13
- runs-on: ubuntu-latest
14
- steps:
15
- - name: Checkout codes
16
- uses: actions/checkout@v4
17
- with:
18
- fetch-depth: 0
19
-
20
- - name: Enable corepack
21
- run: corepack enable
22
-
23
- - name: Setup node.js
24
- uses: actions/setup-node@v4
25
- with:
26
- node-version: 18
27
- cache: 'pnpm'
28
-
29
- - name: Install dependencies
30
- run: pnpm install --frozen-lockfile
31
-
32
- - name: Create github releases
33
- run: |
34
- npx changelogithub
35
- env:
36
- GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
37
-
38
- - name: Extract version tag
39
- if: startsWith( github.ref, 'refs/tags/v' )
40
- uses: jungwinter/split@v2
41
- id: split
42
- with:
43
- msg: ${{ github.ref }}
44
- separator: '/'
45
-
46
- - name: Sync changelog from github releases
47
- run: |
48
- pnpm changelog --tag=${{ steps.split.outputs._2 }}
49
- env:
50
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
51
-
52
- - name: Commit changelog
53
- uses: stefanzweifel/git-auto-commit-action@v5
54
- with:
55
- branch: master
56
- file_pattern: 'CHANGELOG.md'
57
- commit_message: 'chore: generate changelog'
58
-
59
- - name: Publish package
60
- run: ./scripts/release.sh
61
- env:
62
- NPM_TOKEN: ${{secrets.NPM_TOKEN}}
package/eslint.config.mjs DELETED
@@ -1,73 +0,0 @@
1
- import globals from 'globals'
2
- import js from '@eslint/js'
3
- import ts from 'typescript-eslint'
4
- import eslintConfigPrettier from 'eslint-config-prettier'
5
-
6
- /**
7
- * @typedef {import("eslint").Linter.FlatConfig[]} FlatConfigs
8
- */
9
-
10
- /** @type { FlatConfigs } */
11
- export default [
12
- // ignores
13
- {
14
- ignores: ['.nuxt', 'dist', 'playground', 'specs', 'test/fixtures', 'coverage', 'src/runtime/templates/**', 'docs']
15
- },
16
-
17
- // for global and envrionment
18
- {
19
- languageOptions: {
20
- globals: {
21
- ...globals.node,
22
- ...globals.browser
23
- }
24
- }
25
- },
26
-
27
- // eslint built-in
28
- js.configs.recommended,
29
-
30
- // typescript-eslint
31
- ...ts.configs.recommendedTypeChecked,
32
- {
33
- files: ['**/*.ts', '**/*.tsx', '**/*.cts', '**/*.mts'],
34
- languageOptions: {
35
- parser: ts.parser,
36
- parserOptions: {
37
- sourceType: 'module',
38
- project: true,
39
- tsconfigRootDir: import.meta.dirname
40
- }
41
- },
42
- rules: {
43
- '@typescript-eslint/no-unused-vars': [
44
- 'error',
45
- {
46
- args: 'all',
47
- argsIgnorePattern: '^_',
48
- caughtErrors: 'all',
49
- caughtErrorsIgnorePattern: '^_',
50
- destructuredArrayIgnorePattern: '^_',
51
- varsIgnorePattern: '^_',
52
- ignoreRestSiblings: true
53
- }
54
- ]
55
- }
56
- },
57
- {
58
- files: ['**/*.js', '**/*.cjs', '**/*.mjs'],
59
- ...ts.configs.disableTypeChecked
60
- },
61
-
62
- // prettier
63
- eslintConfigPrettier,
64
-
65
- // override rules
66
- {
67
- rules: {
68
- '@typescript-eslint/no-explicit-any': 'off',
69
- '@typescript-eslint/ban-ts-comment': 'off',
70
- '@typescript-eslint/unbound-method': 'off'
71
- }
72
- }
73
- ]
@@ -1,5 +0,0 @@
1
- <template>
2
- <NuxtLayout>
3
- <NuxtPage />
4
- </NuxtLayout>
5
- </template>
@@ -1,111 +0,0 @@
1
- {
2
- "title": "Questioneer",
3
- "description": "Questioneer for tennis camp 'name'",
4
- "renderer": "MultiStage",
5
- "type": "object",
6
- "required": [
7
- "personal",
8
- "clothing",
9
- "dietary",
10
- "firstname"
11
- ],
12
- "properties": {
13
- "personal": {
14
- "title": "Personal",
15
- "type": "object",
16
- "required": [
17
- "firstname",
18
- "lastname",
19
- "email"
20
- ],
21
- "properties": {
22
- "firstname": {
23
- "title": "Firstname",
24
- "description": "First name pertisipant",
25
- "type": "string",
26
- "default": ""
27
- },
28
- "lastname": {
29
- "title": "Lastname",
30
- "description": "Last name pertisipant",
31
- "type": "string",
32
- "default": ""
33
- },
34
- "email": {
35
- "title": "Email",
36
- "description": "Last name pertisipant",
37
- "type": "string",
38
- "format": "email",
39
- "default": ""
40
- },
41
- "custmoinput": {
42
- "title": "Custom input",
43
- "description": "First name pertisipant",
44
- "type": "string",
45
- "default": "",
46
- "renderer": "CustomInput"
47
- },
48
- "textarea": {
49
- "title": "Firstname",
50
- "description": "First name pertisipant",
51
- "type": "string",
52
- "default": "",
53
- "renderer": "STextarea"
54
- }
55
- }
56
- },
57
- "clothing": {
58
- "title": "Clothing",
59
- "type": "object",
60
- "required": [
61
- "tshirtSize"
62
- ],
63
- "properties": {
64
- "tshirtSize": {
65
- "title": "T-shirt size",
66
- "renderer": "SSelect",
67
- "description": "T-shirt size",
68
- "enum": [
69
- "s",
70
- "m",
71
- "l",
72
- "xl"
73
- ],
74
- "type": "string"
75
- }
76
- }
77
- },
78
- "dietary": {
79
- "title": "Dietary",
80
- "type": "object",
81
- "required": [
82
- "vegetarian",
83
- "vegan",
84
- "halal",
85
- "nutAllergy"
86
- ],
87
- "properties": {
88
- "vegetarian": {
89
- "title": "Vegetarian",
90
- "description": "Vegetarian dietary restrictions",
91
- "type": "boolean"
92
- },
93
- "vegan": {
94
- "title": "Vegan",
95
- "description": "Vegan dietary restrictions",
96
- "type": "boolean"
97
- },
98
- "halal": {
99
- "title": "Halal",
100
- "description": "Halal dietary restrictions",
101
- "type": "boolean"
102
- },
103
- "nutAllergy": {
104
- "title": "Nut Allergy",
105
- "description": "Nut allergy",
106
- "type": "boolean"
107
- }
108
- }
109
- }
110
- }
111
- }
@@ -1,16 +0,0 @@
1
- {
2
- "title": "Questioneer",
3
- "description": "Questioneer for tennis camp 'name'",
4
- "type": "object",
5
- "required": [
6
- "firstname"
7
- ],
8
- "properties": {
9
- "firstname": {
10
- "title": "Firstname",
11
- "description": "First name pertisipant",
12
- "type": "string",
13
- "default": ""
14
- }
15
- }
16
- }
@@ -1,116 +0,0 @@
1
- {
2
- "title": "Questioneer",
3
- "description": "Questioneer for tennis camp 'name'",
4
- "renderer": "MultiStage",
5
- "type": "object",
6
- "required": [
7
- "personal",
8
- "permissions",
9
- "clothing",
10
- "dietary",
11
- "firstname"
12
- ],
13
- "properties": {
14
- "personal": {
15
- "icon": "i-lucide-user",
16
- "title": "Personal",
17
- "type": "object",
18
- "required": [
19
- "firstname",
20
- "lastname",
21
- "email"
22
- ],
23
- "properties": {
24
- "firstname": {
25
- "title": "Firstname",
26
- "description": "First name pertisipant",
27
- "type": "string",
28
- "default": ""
29
- },
30
- "lastname": {
31
- "title": "Lastname",
32
- "description": "Last name pertisipant",
33
- "type": "string",
34
- "default": ""
35
- },
36
- "email": {
37
- "title": "Email",
38
- "description": "Last name pertisipant",
39
- "type": "string",
40
- "format": "email",
41
- "default": ""
42
- }
43
- }
44
- },
45
- "permissions": {
46
- "icon": "i-lucide-lock",
47
- "title": "Terms",
48
- "type": "object",
49
- "required": [
50
- "agree"
51
- ],
52
- "properties": {
53
- "agree": {
54
- "title": "Agree",
55
- "description": "Accept all term",
56
- "type": "boolean"
57
- }
58
- }
59
- },
60
- "clothing": {
61
- "icon": "i-lucide-shirt",
62
- "title": "Clothing",
63
- "type": "object",
64
- "required": [
65
- "tshirtSize"
66
- ],
67
- "properties": {
68
- "tshirtSize": {
69
- "title": "T-shirt size",
70
- "renderer": "SSelect",
71
- "description": "T-shirt size",
72
- "enum": [
73
- "s",
74
- "m",
75
- "l",
76
- "xl"
77
- ],
78
- "type": "string"
79
- }
80
- }
81
- },
82
- "dietary": {
83
- "icon": "i-lucide-apple",
84
- "title": "Dietary",
85
- "type": "object",
86
- "required": [
87
- "vegetarian",
88
- "vegan",
89
- "halal",
90
- "nutAllergy"
91
- ],
92
- "properties": {
93
- "vegetarian": {
94
- "title": "Vegetarian",
95
- "description": "Vegetarian dietary restrictions",
96
- "type": "boolean"
97
- },
98
- "vegan": {
99
- "title": "Vegan",
100
- "description": "Vegan dietary restrictions",
101
- "type": "boolean"
102
- },
103
- "halal": {
104
- "title": "Halal",
105
- "description": "Halal dietary restrictions",
106
- "type": "boolean"
107
- },
108
- "nutAllergy": {
109
- "title": "Nut Allergy",
110
- "description": "Nut allergy",
111
- "type": "boolean"
112
- }
113
- }
114
- }
115
- }
116
- }
@@ -1,26 +0,0 @@
1
- <script lang="ts" setup>
2
- const colorMode = useColorMode()
3
- const isDark = computed({
4
- get() {
5
- return colorMode.value === 'dark'
6
- },
7
- set() {
8
- colorMode.preference = colorMode.value === 'dark' ? 'light' : 'dark'
9
- }
10
- })
11
- </script>
12
-
13
- <template>
14
- <ClientOnly>
15
- <UButton
16
- :icon="isDark ? 'i-heroicons-moon-20-solid' : 'i-heroicons-sun-20-solid'"
17
- color="gray"
18
- variant="ghost"
19
- aria-label="Theme"
20
- @click="isDark = !isDark"
21
- />
22
- <template #fallback>
23
- <div class="w-8 h-8" />
24
- </template>
25
- </ClientOnly>
26
- </template>
@@ -1,7 +0,0 @@
1
- <script lang="ts" setup>
2
- const value = defineModel<string>({ required: true })
3
- </script>
4
-
5
- <template>
6
- <input v-model="value" type="text" />
7
- </template>