actionview-svelte-handler 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/svelte/handler.rb +1 -1
- data/lib/svelte/js/builder.js +30 -14
- data/lib/svelte/templates/assembler.js.erb +2 -1
- data/lib/svelte/templates/island.html.erb +7 -9
- data/lib/svelte/version.rb +1 -1
- data/lib/ts/builder.ts +23 -7
- data/lib/ts/types/builder.d.ts +2 -1
- data/package-lock.json +20 -0
- data/package.json +1 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1fcb603925b52a51a8488d83da752370c24135602c464b51993f86b58fedf1af
|
4
|
+
data.tar.gz: 7f3e9f80901d4b567758e259ab37e5ed7a315459a3b1b867b9f2f847b1697b29
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a4260e66a28e3006940465ef5158f3bdf9cc2559327ca14ca4f4ff7c75d405bf051abc7e95de2452e5083a6ef68d51375735735340039ea4fc54ce1f0a4eb6e8
|
7
|
+
data.tar.gz: 0b131aebc945768f2a7bfd0a4d16cddf80e4198a54d59dffa48a4da6b76573bfc5e439a332e5ee3c4189fc2f29bc2f5cde3e3045dc44330482244c0406a90f46
|
data/Gemfile.lock
CHANGED
data/lib/svelte/handler.rb
CHANGED
data/lib/svelte/js/builder.js
CHANGED
@@ -15,6 +15,7 @@ import commonjs from "@rollup/plugin-commonjs";
|
|
15
15
|
import { nodeResolve } from "@rollup/plugin-node-resolve";
|
16
16
|
import virtual from "@rollup/plugin-virtual";
|
17
17
|
import swc from "@rollup/plugin-swc";
|
18
|
+
import path from "node:path";
|
18
19
|
class Builder {
|
19
20
|
path;
|
20
21
|
props;
|
@@ -24,8 +25,10 @@ class Builder {
|
|
24
25
|
workingDir;
|
25
26
|
preprocess;
|
26
27
|
pathAliases;
|
27
|
-
|
28
|
-
|
28
|
+
root;
|
29
|
+
constructor(path2, root, props, locals, client, server, ssr, workingDir, preprocess, pathAliases) {
|
30
|
+
this.path = path2;
|
31
|
+
this.root = root;
|
29
32
|
this.props = readable(Object.assign(props, locals, props));
|
30
33
|
this.locals = locals;
|
31
34
|
this.compiled = {
|
@@ -42,7 +45,7 @@ class Builder {
|
|
42
45
|
input: "entry",
|
43
46
|
output: {
|
44
47
|
format: "esm",
|
45
|
-
sourcemap:
|
48
|
+
sourcemap: true
|
46
49
|
},
|
47
50
|
watch: {
|
48
51
|
skipWrite: true
|
@@ -63,7 +66,7 @@ class Builder {
|
|
63
66
|
preprocess: sveltePreprocess(this.preprocess),
|
64
67
|
onwarn: (warning, handler) => {
|
65
68
|
if (warning.code === "missing-declaration" && warning.message.includes("'props'")) return;
|
66
|
-
|
69
|
+
throw new Error(warning.message);
|
67
70
|
}
|
68
71
|
}),
|
69
72
|
// @ts-expect-error see https://github.com/rollup/plugins/issues/1662
|
@@ -83,13 +86,26 @@ class Builder {
|
|
83
86
|
swc({
|
84
87
|
swc: {
|
85
88
|
jsc: {
|
86
|
-
target: "es6"
|
87
|
-
|
89
|
+
target: "es6",
|
90
|
+
minify: {
|
91
|
+
format: {
|
92
|
+
comments: "all"
|
93
|
+
}
|
94
|
+
}
|
95
|
+
},
|
96
|
+
minify: true,
|
97
|
+
sourceMaps: true,
|
98
|
+
inlineSourcesContent: true
|
88
99
|
}
|
89
100
|
})
|
90
101
|
]
|
91
|
-
})).generate({ format: "esm", sourcemap:
|
92
|
-
|
102
|
+
})).generate({ format: "esm", sourcemap: true })).output;
|
103
|
+
bundle[0].map.sources = bundle[0].map.sources.map((el) => {
|
104
|
+
return path.relative(this.path, this.root) + "/" + path.relative(this.root, el);
|
105
|
+
});
|
106
|
+
return `//# sourceMappingURL=${bundle[0].map.toUrl()}
|
107
|
+
//# sourceURL=${path.relative(this.path, this.root) + "/" + path.relative(this.root, this.path)}
|
108
|
+
${bundle[0].code}`.trim();
|
93
109
|
}
|
94
110
|
async client() {
|
95
111
|
return this.compiled?.client || this.standardizeClient(await this.bundle("dom"));
|
@@ -98,17 +114,17 @@ class Builder {
|
|
98
114
|
const ast = recast.parse(code);
|
99
115
|
let name;
|
100
116
|
recast.visit(ast, {
|
101
|
-
visitExportNamedDeclaration: (
|
102
|
-
const stagingName =
|
117
|
+
visitExportNamedDeclaration: (path2) => {
|
118
|
+
const stagingName = path2.node?.specifiers?.[0].local?.name;
|
103
119
|
name = typeof stagingName !== "string" ? "" : stagingName;
|
104
|
-
|
120
|
+
path2.prune();
|
105
121
|
return false;
|
106
122
|
}
|
107
123
|
});
|
108
124
|
recast.visit(ast, {
|
109
|
-
visitIdentifier: (
|
110
|
-
if (
|
111
|
-
|
125
|
+
visitIdentifier: (path2) => {
|
126
|
+
if (path2.node.name === name) {
|
127
|
+
path2.node.name = "App";
|
112
128
|
}
|
113
129
|
return false;
|
114
130
|
}
|
@@ -1,7 +1,8 @@
|
|
1
1
|
import Builder from "actionview-svelte-handler";
|
2
2
|
|
3
3
|
const bob = new Builder(
|
4
|
-
'<%= path %>',
|
4
|
+
'<%= path %>',
|
5
|
+
'<%= Rails.root %>',
|
5
6
|
JSON.parse('<%= Svelte.props.to_json || "{}" %>'),
|
6
7
|
JSON.parse('<%= locals.to_json || "{}" %>'),
|
7
8
|
'<%= compiled_client || "" %>',
|
@@ -7,14 +7,12 @@
|
|
7
7
|
<%= result.dig(:server, :css) %>
|
8
8
|
</style>
|
9
9
|
<template data-island>
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
});
|
18
|
-
</script>
|
10
|
+
<script type="module"><%= result.dig(:client).strip %>;
|
11
|
+
new App({
|
12
|
+
target: document.getElementById("hydratee-<%= digest %>"),
|
13
|
+
props: JSON.parse('<%= locals.to_json %>'),
|
14
|
+
hydrate: true
|
15
|
+
});
|
16
|
+
</script>
|
19
17
|
</template>
|
20
18
|
</is-land>
|
data/lib/svelte/version.rb
CHANGED
data/lib/ts/builder.ts
CHANGED
@@ -10,6 +10,7 @@ import commonjs from '@rollup/plugin-commonjs';
|
|
10
10
|
import { nodeResolve } from '@rollup/plugin-node-resolve';
|
11
11
|
import virtual from '@rollup/plugin-virtual';
|
12
12
|
import swc from '@rollup/plugin-swc';
|
13
|
+
import path from "node:path"
|
13
14
|
|
14
15
|
export interface BuildSuccess {
|
15
16
|
client: string
|
@@ -46,9 +47,11 @@ class Builder {
|
|
46
47
|
workingDir: string
|
47
48
|
preprocess: object
|
48
49
|
pathAliases?: object
|
50
|
+
root: string
|
49
51
|
|
50
52
|
constructor (
|
51
53
|
path: string,
|
54
|
+
root: string,
|
52
55
|
props: object,
|
53
56
|
locals: object,
|
54
57
|
client: string | null,
|
@@ -59,6 +62,7 @@ class Builder {
|
|
59
62
|
pathAliases: object
|
60
63
|
) {
|
61
64
|
this.path = path
|
65
|
+
this.root = root
|
62
66
|
this.props = readable(Object.assign(props, locals, props))
|
63
67
|
this.locals = locals
|
64
68
|
this.compiled = {
|
@@ -76,7 +80,7 @@ class Builder {
|
|
76
80
|
input: 'entry',
|
77
81
|
output: {
|
78
82
|
format: "esm",
|
79
|
-
sourcemap:
|
83
|
+
sourcemap: true
|
80
84
|
},
|
81
85
|
watch: {
|
82
86
|
skipWrite: true
|
@@ -101,7 +105,7 @@ class Builder {
|
|
101
105
|
warning.message.includes("'props'")
|
102
106
|
) return
|
103
107
|
|
104
|
-
|
108
|
+
throw new Error(warning.message);
|
105
109
|
}
|
106
110
|
}),
|
107
111
|
// @ts-expect-error see https://github.com/rollup/plugins/issues/1662
|
@@ -119,14 +123,26 @@ class Builder {
|
|
119
123
|
swc({
|
120
124
|
swc: {
|
121
125
|
jsc: {
|
122
|
-
target: "es6"
|
123
|
-
|
126
|
+
target: "es6",
|
127
|
+
minify: {
|
128
|
+
format: {
|
129
|
+
comments: 'all'
|
130
|
+
},
|
131
|
+
}
|
132
|
+
},
|
133
|
+
minify: true,
|
134
|
+
sourceMaps: true,
|
135
|
+
inlineSourcesContent: true
|
124
136
|
}
|
125
137
|
})
|
126
138
|
]
|
127
|
-
})).generate({ format: "esm", sourcemap:
|
128
|
-
|
129
|
-
|
139
|
+
})).generate({ format: "esm", sourcemap: true })).output
|
140
|
+
|
141
|
+
bundle[0].map!.sources = bundle[0].map!.sources.map((el) => {
|
142
|
+
return path.relative(this.path, this.root) + "/" + path.relative(this.root, el)
|
143
|
+
})
|
144
|
+
|
145
|
+
return `//# sourceMappingURL=${bundle[0].map!.toUrl()}\n//# sourceURL=${path.relative(this.path, this.root) + "/" + path.relative(this.root, this.path) }\n${bundle[0].code}`.trim()
|
130
146
|
}
|
131
147
|
|
132
148
|
async client (): Promise<string> {
|
data/lib/ts/types/builder.d.ts
CHANGED
@@ -30,7 +30,8 @@ declare class Builder {
|
|
30
30
|
workingDir: string;
|
31
31
|
preprocess: object;
|
32
32
|
pathAliases?: object;
|
33
|
-
|
33
|
+
root: string;
|
34
|
+
constructor(path: string, root: string, props: object, locals: object, client: string | null, server: string | null, ssr: boolean, workingDir: string, preprocess: object, pathAliases: object);
|
34
35
|
bundle(generate: 'ssr' | 'dom'): Promise<string>;
|
35
36
|
client(): Promise<string>;
|
36
37
|
standardizeClient(code: string): string;
|
data/package-lock.json
CHANGED
@@ -14,6 +14,7 @@
|
|
14
14
|
"@rollup/plugin-swc": "^0.4.0",
|
15
15
|
"@rollup/plugin-virtual": "^3.0.2",
|
16
16
|
"@swc/core": "^1.7.26",
|
17
|
+
"convert-source-map": "^2.0.0",
|
17
18
|
"esbuild-svelte": "^0.8.1",
|
18
19
|
"flat": "^6.0.1",
|
19
20
|
"inflected": "^2.1.0",
|
@@ -22,10 +23,12 @@
|
|
22
23
|
"recast": "^0.23.9",
|
23
24
|
"rollup": "^4.22.4",
|
24
25
|
"rollup-plugin-svelte": "^7.2.2",
|
26
|
+
"rollup-sourcemap-path-transform": "^1.0.5",
|
25
27
|
"svelte": "^4.2.19",
|
26
28
|
"svelte-preprocess": "^6.0.2"
|
27
29
|
},
|
28
30
|
"devDependencies": {
|
31
|
+
"@types/convert-source-map": "^2.0.3",
|
29
32
|
"@types/lodash.merge": "^4.6.9",
|
30
33
|
"surge": "^0.23.1",
|
31
34
|
"ts-standard": "^12.0.2",
|
@@ -3161,6 +3164,12 @@
|
|
3161
3164
|
"@swc/counter": "^0.1.3"
|
3162
3165
|
}
|
3163
3166
|
},
|
3167
|
+
"node_modules/@types/convert-source-map": {
|
3168
|
+
"version": "2.0.3",
|
3169
|
+
"resolved": "https://registry.npmjs.org/@types/convert-source-map/-/convert-source-map-2.0.3.tgz",
|
3170
|
+
"integrity": "sha512-ag0BfJLZf6CQz8VIuRIEYQ5Ggwk/82uvTQf27RcpyDNbY0Vw49LIPqAxk5tqYfrCs9xDaIMvl4aj7ZopnYL8bA==",
|
3171
|
+
"dev": true
|
3172
|
+
},
|
3164
3173
|
"node_modules/@types/estree": {
|
3165
3174
|
"version": "1.0.5",
|
3166
3175
|
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
|
@@ -8107,6 +8116,17 @@
|
|
8107
8116
|
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
|
8108
8117
|
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
|
8109
8118
|
},
|
8119
|
+
"node_modules/rollup-sourcemap-path-transform": {
|
8120
|
+
"version": "1.0.5",
|
8121
|
+
"resolved": "https://registry.npmjs.org/rollup-sourcemap-path-transform/-/rollup-sourcemap-path-transform-1.0.5.tgz",
|
8122
|
+
"integrity": "sha512-i7mcb8heyQcG+76oZrmdrkrtNVIpuefqhHYxdsqWO4wZO/8/BtUoBr2YKy+QyzdTYvR+EKTmoHN4Yg29LYC4Dw==",
|
8123
|
+
"engines": {
|
8124
|
+
"node": ">= 14.18"
|
8125
|
+
},
|
8126
|
+
"peerDependencies": {
|
8127
|
+
"rollup": "^2 || ^3 || ^4"
|
8128
|
+
}
|
8129
|
+
},
|
8110
8130
|
"node_modules/run-async": {
|
8111
8131
|
"version": "2.4.1",
|
8112
8132
|
"resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
|
data/package.json
CHANGED
@@ -23,10 +23,6 @@
|
|
23
23
|
"@rollup/plugin-swc": "^0.4.0",
|
24
24
|
"@rollup/plugin-virtual": "^3.0.2",
|
25
25
|
"@swc/core": "^1.7.26",
|
26
|
-
"esbuild-svelte": "^0.8.1",
|
27
|
-
"flat": "^6.0.1",
|
28
|
-
"inflected": "^2.1.0",
|
29
|
-
"lodash.merge": "^4.6.2",
|
30
26
|
"module-from-string": "^3.3.1",
|
31
27
|
"recast": "^0.23.9",
|
32
28
|
"rollup": "^4.22.4",
|
@@ -48,7 +44,7 @@
|
|
48
44
|
"docs:deploy": "vitepress build docs && surge docs/.vitepress/dist"
|
49
45
|
},
|
50
46
|
"devDependencies": {
|
51
|
-
"@types/
|
47
|
+
"@types/convert-source-map": "^2.0.3",
|
52
48
|
"surge": "^0.23.1",
|
53
49
|
"ts-standard": "^12.0.2",
|
54
50
|
"typescript": "^5.5.4",
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: actionview-svelte-handler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- reesericci
|
8
8
|
autorequire: svelte
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-09-
|
11
|
+
date: 2024-09-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|