rebuildjs 0.41.3 → 0.43.0
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.
- package/_fixtures/metafiles.ts +1 -1
- package/_fixtures/src/app/index.server.ts +1 -2
- package/_fixtures/src/index.ts +3 -3
- package/any/asset/index.d.ts +6 -0
- package/any/asset/index.js +20 -0
- package/any/asset/index.test.ts +23 -0
- package/any/index.d.ts +3 -0
- package/any/index.js +3 -0
- package/{types → file_types}/index.d.ts +1 -0
- package/index.d.ts +1 -10
- package/index.js +1 -10
- package/package.json +89 -86
- package/{app → server/app}/index.d.ts +0 -1
- package/{asset → server/asset}/index.d.ts +0 -6
- package/{asset → server/asset}/index.js +2 -8
- package/{asset → server/asset}/index.test.ts +4 -23
- package/{build → server/build}/index.d.ts +2 -3
- package/{build → server/build}/index.js +39 -8
- package/{build → server/build}/index.test.ts +13 -13
- package/server/index.d.ts +12 -22
- package/server/index.js +12 -144
- package/{metafile → server/metafile}/index.d.ts +0 -1
- package/{metafile → server/metafile}/index.js +2 -2
- package/{metafile → server/metafile}/index.test.ts +3 -3
- package/server/middleware/index.test.ts +28 -0
- package/{browser → server/rebuildjs_browser}/index.d.ts +0 -1
- package/{browser → server/rebuildjs_browser}/index.js +1 -1
- package/{browser → server/rebuildjs_browser}/index.test.ts +2 -2
- package/server/rebuildjs_server/index.d.ts +22 -0
- package/server/rebuildjs_server/index.js +143 -0
- package/server/{index.test.ts → rebuildjs_server/index.test.ts} +1 -1
- package/middleware/index.test.ts +0 -18
- /package/{metafile_l0 → file_types}/index.js +0 -0
- /package/{app → server/app}/index.js +0 -0
- /package/{app → server/app}/index.test.ts +0 -0
- /package/{ctx → server/ctx}/index.d.ts +0 -0
- /package/{ctx → server/ctx}/index.js +0 -0
- /package/{ctx → server/ctx}/index.test.ts +0 -0
- /package/{metafile_l0 → server/metafile_l0}/index.d.ts +0 -0
- /package/{types → server/metafile_l0}/index.js +0 -0
- /package/{middleware → server/middleware}/index.d.ts +0 -0
- /package/{middleware → server/middleware}/index.js +0 -0
package/_fixtures/metafiles.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import './index.server.css'
|
|
2
|
-
import { assets_ } from '../../../
|
|
3
|
-
import { type middleware_ctx_T, route_ctx__new } from '../../../ctx/index.js'
|
|
2
|
+
import { assets_, type middleware_ctx_T, route_ctx__new } from '../../../server/index.js'
|
|
4
3
|
export default (middleware_ctx:middleware_ctx_T)=>{
|
|
5
4
|
return (request:Request)=>{
|
|
6
5
|
const route_ctx = route_ctx__new(middleware_ctx)
|
package/_fixtures/src/index.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { is_entry_file_ } from 'ctx-core/fs'
|
|
2
|
-
import {
|
|
2
|
+
import { rebuildjs_browser__build, rebuildjs_server__build } from '../../server/build/index.js'
|
|
3
3
|
is_entry_file_(import.meta.url, process.argv[1])
|
|
4
4
|
.then(async is_entry_file=>{
|
|
5
5
|
if (is_entry_file) {
|
|
6
|
-
await
|
|
7
|
-
await
|
|
6
|
+
await rebuildjs_server__build()
|
|
7
|
+
await rebuildjs_browser__build()
|
|
8
8
|
}
|
|
9
9
|
})
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @param {Promise<{ default:string }>}mod_promise
|
|
3
|
+
* @returns {Promise<string>}
|
|
4
|
+
* @private
|
|
5
|
+
*/
|
|
6
|
+
export function asset_path_(mod_promise) {
|
|
7
|
+
return (
|
|
8
|
+
mod_promise
|
|
9
|
+
.then(mod=>mod.default)
|
|
10
|
+
.then(relative_path=>relative_path.replace(/^\.\//, '/'))
|
|
11
|
+
)
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* @param {Promise<{ default:string }>}mod_promise_a
|
|
15
|
+
* @returns {Promise<string[]>}
|
|
16
|
+
* @private
|
|
17
|
+
*/
|
|
18
|
+
export function asset_path_a_(...mod_promise_a) {
|
|
19
|
+
return Promise.all(mod_promise_a.map(asset_path_))
|
|
20
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { test } from 'uvu'
|
|
2
|
+
import { equal } from 'uvu/assert'
|
|
3
|
+
import { asset_path_, asset_path_a_ } from './index.js'
|
|
4
|
+
test('asset_path_', async ()=>{
|
|
5
|
+
equal(await asset_path_(mod_('./path.png')), '/path.png')
|
|
6
|
+
})
|
|
7
|
+
test('asset_path_a_', async ()=>{
|
|
8
|
+
equal(await asset_path_a_(
|
|
9
|
+
mod_('./path0.png'),
|
|
10
|
+
mod_('./path1.png'),
|
|
11
|
+
mod_('./path2.png'),
|
|
12
|
+
mod_('./path3.png'),
|
|
13
|
+
), [
|
|
14
|
+
'/path0.png',
|
|
15
|
+
'/path1.png',
|
|
16
|
+
'/path2.png',
|
|
17
|
+
'/path3.png',
|
|
18
|
+
])
|
|
19
|
+
})
|
|
20
|
+
test.run()
|
|
21
|
+
async function mod_(out_path:string) {
|
|
22
|
+
return { default: out_path }
|
|
23
|
+
}
|
package/any/index.d.ts
ADDED
package/any/index.js
ADDED
package/index.d.ts
CHANGED
|
@@ -1,10 +1 @@
|
|
|
1
|
-
export
|
|
2
|
-
export * from 'ctx-core/rmemo'
|
|
3
|
-
export * from './app/index.js'
|
|
4
|
-
export * from './asset/index.js'
|
|
5
|
-
export * from './browser/index.js'
|
|
6
|
-
export * from './build/index.js'
|
|
7
|
-
export * from './ctx/index.js'
|
|
8
|
-
export * from './metafile/index.js'
|
|
9
|
-
export * from './middleware/index.js'
|
|
10
|
-
export * from './server/index.js'
|
|
1
|
+
export {}
|
package/index.js
CHANGED
|
@@ -1,10 +1 @@
|
|
|
1
|
-
export
|
|
2
|
-
export * from 'ctx-core/rmemo'
|
|
3
|
-
export * from './app/index.js'
|
|
4
|
-
export * from './asset/index.js'
|
|
5
|
-
export * from './browser/index.js'
|
|
6
|
-
export * from './build/index.js'
|
|
7
|
-
export * from './ctx/index.js'
|
|
8
|
-
export * from './metafile/index.js'
|
|
9
|
-
export * from './middleware/index.js'
|
|
10
|
-
export * from './server/index.js'
|
|
1
|
+
export {}
|
package/package.json
CHANGED
|
@@ -1,87 +1,90 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
2
|
+
"name": "rebuildjs",
|
|
3
|
+
"version": "0.43.0",
|
|
4
|
+
"description": "Reactive esbuild...simple hackable alternative to vite for Multi Page Apps",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"reactive",
|
|
7
|
+
"multi page apps",
|
|
8
|
+
"web app",
|
|
9
|
+
"web server",
|
|
10
|
+
"esbuild",
|
|
11
|
+
"rmemo",
|
|
12
|
+
"ctx-core"
|
|
13
|
+
],
|
|
14
|
+
"homepage": "https://github.com/rebuildjs/rebuildjs#readme",
|
|
15
|
+
"bugs": {
|
|
16
|
+
"url": "https://github.com/rebuildjs/rebuildjs/issues"
|
|
17
|
+
},
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "https://github.com/rebuildjs/rebuildjs.git"
|
|
21
|
+
},
|
|
22
|
+
"license": "Apache-2.0",
|
|
23
|
+
"author": "Brian Takita",
|
|
24
|
+
"type": "module",
|
|
25
|
+
"files": [
|
|
26
|
+
"*.d.ts",
|
|
27
|
+
"*.js",
|
|
28
|
+
"*.json",
|
|
29
|
+
"_fixtures",
|
|
30
|
+
"any",
|
|
31
|
+
"file_types",
|
|
32
|
+
"server"
|
|
33
|
+
],
|
|
34
|
+
"exports": {
|
|
35
|
+
".": {
|
|
36
|
+
"default": "./index.js",
|
|
37
|
+
"module": "./index.js",
|
|
38
|
+
"types": "./index.d.ts"
|
|
39
|
+
},
|
|
40
|
+
"./any": {
|
|
41
|
+
"default": "./any/index.js",
|
|
42
|
+
"module": "./any/index.js",
|
|
43
|
+
"types": "./any/index.d.ts"
|
|
44
|
+
},
|
|
45
|
+
"./file_types": {
|
|
46
|
+
"default": "./file_types/index.js",
|
|
47
|
+
"module": "./file_types/index.js",
|
|
48
|
+
"types": "./file_types/index.d.ts"
|
|
49
|
+
},
|
|
50
|
+
"./server": {
|
|
51
|
+
"default": "./server/index.js",
|
|
52
|
+
"module": "./server/index.js",
|
|
53
|
+
"types": "./server/index.d.ts"
|
|
54
|
+
},
|
|
55
|
+
"./package.json": "./package.json"
|
|
56
|
+
},
|
|
57
|
+
"scripts": {
|
|
58
|
+
"build": ":",
|
|
59
|
+
"clean": ":",
|
|
60
|
+
"exec": "$@",
|
|
61
|
+
"prepublishOnly": "pnpm clean && pnpm build && pnpm test",
|
|
62
|
+
"test": "pnpm test:unit && pnpm test:types",
|
|
63
|
+
"test:types": "check-dts",
|
|
64
|
+
"test:unit": "NODE_OPTIONS=--loader=esmock tsx node_modules/uvu/bin.js . '\\.test\\.(ts|js)$'",
|
|
65
|
+
"test:unit:coverage": "c8 pnpm test:unit"
|
|
66
|
+
},
|
|
67
|
+
"dependencies": {
|
|
68
|
+
"ctx-core": "^5.25.3",
|
|
69
|
+
"elysia": "^0.8.9",
|
|
70
|
+
"esbuild": "^0.19.11",
|
|
71
|
+
"fdir": "^6.1.1",
|
|
72
|
+
"picomatch": "^3.0.1"
|
|
73
|
+
},
|
|
74
|
+
"devDependencies": {
|
|
75
|
+
"@typescript-eslint/eslint-plugin": "^6.19.0",
|
|
76
|
+
"@typescript-eslint/parser": "^6.19.0",
|
|
77
|
+
"c8": "^9.1.0",
|
|
78
|
+
"check-dts": "^0.7.2",
|
|
79
|
+
"eslint": "^8.56.0",
|
|
80
|
+
"esmock": "^2.6.2",
|
|
81
|
+
"tsx": "^4.7.0",
|
|
82
|
+
"typescript": "next",
|
|
83
|
+
"uvu": "^0.5.6"
|
|
84
|
+
},
|
|
85
|
+
"publishConfig": {
|
|
86
|
+
"access": "public",
|
|
87
|
+
"cache": "~/.npm"
|
|
88
|
+
},
|
|
89
|
+
"sideEffects": false
|
|
90
|
+
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { ctx__be_T, ctx__get_T, ctx__set_T, lock_memosig_T, memo_T, sig_T } from 'ctx-core/rmemo'
|
|
2
|
-
import { has_app_T } from '../ctx/index.js'
|
|
3
2
|
export declare const port$_:ctx__be_T<sig_T<number>, 'app'>
|
|
4
3
|
export declare const port_:ctx__get_T<number, 'app'>
|
|
5
4
|
export declare const port__set:ctx__set_T<number, 'app'>
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
import type { ctx__be_T, ctx__get_T, ctx__set_T } from 'ctx-core/be'
|
|
2
2
|
import type { lock_memosig_T } from 'ctx-core/rmemo'
|
|
3
3
|
import type { has_route_T } from '../ctx/index.js'
|
|
4
|
-
export declare function asset_path_(mod_promise:Promise<{ default:string }>):Promise<string>
|
|
5
|
-
export declare function asset_path_a_<
|
|
6
|
-
Tuple extends [...Promise<{ default:string }>[]]
|
|
7
|
-
>(...mod_promise_a:Tuple):Promise<{
|
|
8
|
-
[Index in keyof Tuple]:string
|
|
9
|
-
}>
|
|
10
4
|
export declare const assets$_:ctx__be_T<lock_memosig_T<assets_T>, 'route'>
|
|
11
5
|
export declare const assets_:ctx__get_T<assets_T, 'route'>
|
|
12
6
|
export declare const assets__set:ctx__set_T<assets_T, 'route'>
|
|
@@ -1,14 +1,8 @@
|
|
|
1
1
|
/// <reference types="./index.d.ts" />
|
|
2
2
|
import { compact } from 'ctx-core/array'
|
|
3
3
|
import { be_lock_memosig_triple_ } from 'ctx-core/rmemo'
|
|
4
|
-
import { browser__css_, browser__script_ } from '../
|
|
5
|
-
import { server__css_ } from '../
|
|
6
|
-
export async function asset_path_(mod_promise) {
|
|
7
|
-
return (await mod_promise.then(mod=>mod.default)).replace(/^\.\//, '/')
|
|
8
|
-
}
|
|
9
|
-
export async function asset_path_a_(...mod_promise_a) {
|
|
10
|
-
return Promise.all(mod_promise_a.map(asset_path_))
|
|
11
|
-
}
|
|
4
|
+
import { browser__css_, browser__script_ } from '../rebuildjs_browser/index.js'
|
|
5
|
+
import { server__css_ } from '../rebuildjs_server/index.js'
|
|
12
6
|
export const [
|
|
13
7
|
assets$_,
|
|
14
8
|
assets_,
|
|
@@ -2,30 +2,14 @@ import { type Ctx, ctx_, ns_ctx_ } from 'ctx-core/be'
|
|
|
2
2
|
import type { Equal, Expect } from 'ctx-core/test'
|
|
3
3
|
import { test } from 'uvu'
|
|
4
4
|
import { equal, throws } from 'uvu/assert'
|
|
5
|
-
import { browser__metafile0, server__metafile0 } from '
|
|
6
|
-
import { browser__metafile__set } from '../
|
|
5
|
+
import { browser__metafile0, server__metafile0 } from '../../_fixtures/metafiles.js'
|
|
6
|
+
import { browser__metafile__set } from '../rebuildjs_browser/index.js'
|
|
7
7
|
import { app_ctx, middleware_ctx__new, route_ctx__new } from '../ctx/index.js'
|
|
8
|
-
import { server__metafile__set, server__output__relative_path__set } from '../
|
|
9
|
-
import {
|
|
8
|
+
import { server__metafile__set, server__output__relative_path__set } from '../rebuildjs_server/index.js'
|
|
9
|
+
import { assets$_, assets_, assets__assign, assets__new, assets__set } from './index.js'
|
|
10
10
|
test.after.each(()=>{
|
|
11
11
|
app_ctx.s.app.clear()
|
|
12
12
|
})
|
|
13
|
-
test('asset_path_', async ()=>{
|
|
14
|
-
equal(await asset_path_(mod_('./path.png')), '/path.png')
|
|
15
|
-
})
|
|
16
|
-
test('asset_path_a_', async ()=>{
|
|
17
|
-
equal(await asset_path_a_(
|
|
18
|
-
mod_('./path0.png'),
|
|
19
|
-
mod_('./path1.png'),
|
|
20
|
-
mod_('./path2.png'),
|
|
21
|
-
mod_('./path3.png'),
|
|
22
|
-
), [
|
|
23
|
-
'/path0.png',
|
|
24
|
-
'/path1.png',
|
|
25
|
-
'/path2.png',
|
|
26
|
-
'/path3.png',
|
|
27
|
-
])
|
|
28
|
-
})
|
|
29
13
|
test('assets', ()=>{
|
|
30
14
|
const route_ctx = route_ctx__new(middleware_ctx__new())
|
|
31
15
|
equal(assets$_(route_ctx)(), {
|
|
@@ -136,6 +120,3 @@ test('assets__new', async ()=>{
|
|
|
136
120
|
})
|
|
137
121
|
})
|
|
138
122
|
test.run()
|
|
139
|
-
async function mod_(out_path:string) {
|
|
140
|
-
return { default: out_path }
|
|
141
|
-
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { ctx__be_T, ctx__get_T, ctx__set_T, rmemo__wait_ret_T, sig_T } from 'ctx-core/rmemo'
|
|
2
2
|
import type { BuildContext, BuildOptions, Plugin } from 'esbuild'
|
|
3
|
-
import type { has_app_T } from '../ctx/index.js'
|
|
4
3
|
export declare const build_id$_:ctx__be_T<sig_T<string|undefined>, 'app'>
|
|
5
4
|
export declare const build_id_:ctx__get_T<string|undefined, 'app'>
|
|
6
5
|
export declare const build_id__set:ctx__set_T<string|undefined, 'app'>
|
|
@@ -15,8 +14,8 @@ export declare const rebuildjs__build_id__set:ctx__set_T<string, 'app'>
|
|
|
15
14
|
export declare const rebuildjs__ready$_:ctx__be_T<sig_T<boolean>, 'app'>
|
|
16
15
|
export declare const rebuildjs__ready_:ctx__get_T<boolean, 'app'>
|
|
17
16
|
export declare function rebuildjs__ready__wait(timeout?:number):rmemo__wait_ret_T<unknown>
|
|
18
|
-
export declare function
|
|
19
|
-
export declare function
|
|
17
|
+
export declare function rebuildjs_browser__build(config?:rebuildjs_build_config_T):Promise<BuildContext>
|
|
18
|
+
export declare function rebuildjs_server__build(config?:rebuildjs_build_config_T):Promise<BuildContext>
|
|
20
19
|
export declare function server__external_(config?:Partial<BuildOptions>):Promise<string[]>
|
|
21
20
|
export declare function rebuildjs_plugin_():Plugin
|
|
22
21
|
export type rebuildjs_build_config_T =
|
|
@@ -35,7 +35,7 @@ import {
|
|
|
35
35
|
browser__metafile_path_,
|
|
36
36
|
browser__output_,
|
|
37
37
|
browser__output__relative_path_
|
|
38
|
-
} from '../
|
|
38
|
+
} from '../rebuildjs_browser/index.js'
|
|
39
39
|
import { app_ctx } from '../ctx/index.js'
|
|
40
40
|
import { metafile__build_id_ } from '../metafile/index.js'
|
|
41
41
|
import {
|
|
@@ -45,7 +45,7 @@ import {
|
|
|
45
45
|
server__metafile_path_,
|
|
46
46
|
server__output_,
|
|
47
47
|
server__output__relative_path_M_middleware_ctx_
|
|
48
|
-
} from '../
|
|
48
|
+
} from '../rebuildjs_server/index.js'
|
|
49
49
|
export const [
|
|
50
50
|
build_id$_,
|
|
51
51
|
build_id_,
|
|
@@ -109,9 +109,9 @@ export const [
|
|
|
109
109
|
function cancel_() {
|
|
110
110
|
return (
|
|
111
111
|
build_id_(ctx) !== build_id
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
112
|
+
|| metafile__build_id_(ctx) !== metafile__build_id
|
|
113
|
+
|| server__metafile_path_(ctx) !== server__metafile_path
|
|
114
|
+
|| browser__metafile_path_(ctx) !== browser__metafile_path
|
|
115
115
|
)
|
|
116
116
|
}
|
|
117
117
|
}))
|
|
@@ -153,7 +153,7 @@ export function rebuildjs__ready__wait(timeout) {
|
|
|
153
153
|
* @returns {Promise<void>}
|
|
154
154
|
* @private
|
|
155
155
|
*/
|
|
156
|
-
export async function
|
|
156
|
+
export async function rebuildjs_browser__build(config) {
|
|
157
157
|
const {
|
|
158
158
|
rebuildjs,
|
|
159
159
|
...esbuild__config
|
|
@@ -177,10 +177,41 @@ export async function browser__build(config) {
|
|
|
177
177
|
entryNames: '[name]-[hash]',
|
|
178
178
|
assetNames: '[name]-[hash]',
|
|
179
179
|
bundle: true,
|
|
180
|
-
target: '
|
|
180
|
+
target: 'es2022',
|
|
181
181
|
treeShaking: true,
|
|
182
182
|
minify: is_prod_(app_ctx),
|
|
183
183
|
sourcemap: 'external',
|
|
184
|
+
loader: {
|
|
185
|
+
'.aac': 'file',
|
|
186
|
+
'.apng': 'file',
|
|
187
|
+
'.avif': 'file',
|
|
188
|
+
'.eot': 'file',
|
|
189
|
+
'.flac': 'file',
|
|
190
|
+
'.gif': 'file',
|
|
191
|
+
'.ico': 'file',
|
|
192
|
+
'.jfif': 'file',
|
|
193
|
+
'.jpeg': 'file',
|
|
194
|
+
'.jpg': 'file',
|
|
195
|
+
'.mov': 'file',
|
|
196
|
+
'.mp3': 'file',
|
|
197
|
+
'.mp4': 'file',
|
|
198
|
+
'.ogg': 'file',
|
|
199
|
+
'.opus': 'file',
|
|
200
|
+
'.otf': 'file',
|
|
201
|
+
'.pdf': 'file',
|
|
202
|
+
'.pjp': 'file',
|
|
203
|
+
'.pjpeg': 'file',
|
|
204
|
+
'.png': 'file',
|
|
205
|
+
'.svg': 'file',
|
|
206
|
+
'.ttf': 'file',
|
|
207
|
+
'.wav': 'file',
|
|
208
|
+
'.webm': 'file',
|
|
209
|
+
'.webmanifest': 'file',
|
|
210
|
+
'.webp': 'file',
|
|
211
|
+
'.woff': 'file',
|
|
212
|
+
'.woff2': 'file',
|
|
213
|
+
'.txt': 'text',
|
|
214
|
+
},
|
|
184
215
|
...esbuild__config,
|
|
185
216
|
entryPoints,
|
|
186
217
|
format: 'esm',
|
|
@@ -204,7 +235,7 @@ export async function browser__build(config) {
|
|
|
204
235
|
* @param {rebuildjs_build_config_T}[config]
|
|
205
236
|
* @returns {Promise<void>}
|
|
206
237
|
*/
|
|
207
|
-
export async function
|
|
238
|
+
export async function rebuildjs_server__build(config) {
|
|
208
239
|
const {
|
|
209
240
|
rebuildjs,
|
|
210
241
|
...esbuild__config
|
|
@@ -7,13 +7,13 @@ import { rm } from 'node:fs/promises'
|
|
|
7
7
|
import { basename, dirname, join } from 'node:path'
|
|
8
8
|
import { test } from 'uvu'
|
|
9
9
|
import { equal, throws } from 'uvu/assert'
|
|
10
|
-
import { browser__metafile0, browser__metafile1, server__metafile0, server__metafile1 } from '
|
|
10
|
+
import { browser__metafile0, browser__metafile1, server__metafile0, server__metafile1 } from '../../_fixtures/metafiles.js'
|
|
11
11
|
import { cwd_, cwd__set } from '../app/index.js'
|
|
12
|
-
import { browser__metafile_, browser__metafile__set } from '../
|
|
12
|
+
import { browser__metafile_, browser__metafile__set } from '../rebuildjs_browser/index.js'
|
|
13
13
|
import { app_ctx } from '../ctx/index.js'
|
|
14
|
-
import { server__metafile_, server__metafile__set } from '../
|
|
14
|
+
import { server__metafile_, server__metafile__set } from '../rebuildjs_server/index.js'
|
|
15
15
|
import {
|
|
16
|
-
|
|
16
|
+
rebuildjs_browser__build,
|
|
17
17
|
build_id$_,
|
|
18
18
|
build_id_,
|
|
19
19
|
build_id__refresh,
|
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
rebuildjs__ready$_,
|
|
25
25
|
rebuildjs__ready_,
|
|
26
26
|
rebuildjs__ready__wait,
|
|
27
|
-
|
|
27
|
+
rebuildjs_server__build
|
|
28
28
|
} from './index.js'
|
|
29
29
|
test.after.each(()=>{
|
|
30
30
|
app_ctx.s.app.clear()
|
|
@@ -117,16 +117,16 @@ test('rebuildjs__ready__wait|timeout', async ()=>{
|
|
|
117
117
|
}
|
|
118
118
|
equal(err!.message, 'Timeout 0ms')
|
|
119
119
|
})
|
|
120
|
-
test('
|
|
120
|
+
test('rebuildjs_browser__build|rebuildjs_server__build|rebuildjs_plugin_|metafile', async ()=>{
|
|
121
121
|
const test_dir = dirname(new URL(import.meta.url).pathname)
|
|
122
|
-
const cwd = join(test_dir, '
|
|
122
|
+
const cwd = join(test_dir, '../../_fixtures')
|
|
123
123
|
cwd__set(app_ctx, cwd)
|
|
124
124
|
await rm(join(cwd, 'dist'), { recursive: true, force: true })
|
|
125
125
|
let server__build_context:BuildContext|undefined = undefined
|
|
126
126
|
let browser__build_context:BuildContext|undefined = undefined
|
|
127
127
|
try {
|
|
128
|
-
server__build_context = await
|
|
129
|
-
browser__build_context = await
|
|
128
|
+
server__build_context = await rebuildjs_server__build()
|
|
129
|
+
browser__build_context = await rebuildjs_browser__build()
|
|
130
130
|
await rebuildjs__ready__wait()
|
|
131
131
|
equal(await file_exists_(join(cwd, 'dist')), true)
|
|
132
132
|
equal(await file_exists_(join(cwd, 'dist', 'browser--dev')), true)
|
|
@@ -177,16 +177,16 @@ test('browser__build|server__build|rebuildjs_plugin_|metafile', async ()=>{
|
|
|
177
177
|
browser__build_context?.dispose?.()
|
|
178
178
|
}
|
|
179
179
|
})
|
|
180
|
-
test('
|
|
180
|
+
test('rebuildjs_browser__build|rebuildjs_server__build|rebuildjs_plugin_|css', async ()=>{
|
|
181
181
|
const test_dir = dirname(new URL(import.meta.url).pathname)
|
|
182
|
-
const cwd = join(test_dir, '
|
|
182
|
+
const cwd = join(test_dir, '../../_fixtures')
|
|
183
183
|
cwd__set(app_ctx, cwd)
|
|
184
184
|
await rm(join(cwd, 'dist'), { recursive: true, force: true })
|
|
185
185
|
let server__build_context:BuildContext|undefined = undefined
|
|
186
186
|
let browser__build_context:BuildContext|undefined = undefined
|
|
187
187
|
try {
|
|
188
|
-
server__build_context = await
|
|
189
|
-
browser__build_context = await
|
|
188
|
+
server__build_context = await rebuildjs_server__build()
|
|
189
|
+
browser__build_context = await rebuildjs_browser__build()
|
|
190
190
|
await rebuildjs__ready__wait()
|
|
191
191
|
const server__metafile = server__metafile_(app_ctx)!
|
|
192
192
|
const server__output__relative_path =
|
package/server/index.d.ts
CHANGED
|
@@ -1,22 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export
|
|
10
|
-
export
|
|
11
|
-
export
|
|
12
|
-
export
|
|
13
|
-
export const server__output__relative_path_:ctx__get_T<string, 'middleware'>
|
|
14
|
-
export const server__output__relative_path__set:ctx__set_T<string, 'middleware'>
|
|
15
|
-
export const server__output$_:ctx__be_T<memo_T<rebuildjs_metafile_T['outputs'][string]|undefined>, 'middleware'>
|
|
16
|
-
export const server__output_:ctx__get_T<rebuildjs_metafile_T['outputs'][string]|undefined, 'middleware'>
|
|
17
|
-
export const server__cssBundle__relative_path$_:ctx__be_T<memo_T<string|undefined>, 'middleware'>
|
|
18
|
-
export const server__cssBundle__relative_path_:ctx__get_T<string|undefined, 'middleware'>
|
|
19
|
-
export const server__cssBundle$_:ctx__be_T<memo_T<string|undefined>, 'middleware'>
|
|
20
|
-
export const server__cssBundle_:ctx__get_T<string|undefined, 'middleware'>
|
|
21
|
-
export const server__css$_:ctx__be_T<memo_T<string|undefined>, 'middleware'>
|
|
22
|
-
export const server__css_:ctx__get_T<string|undefined, 'middleware'>
|
|
1
|
+
export * from 'ctx-core/be'
|
|
2
|
+
export * from 'ctx-core/rmemo'
|
|
3
|
+
export * from './app/index.js'
|
|
4
|
+
export * from './asset/index.js'
|
|
5
|
+
export * from './build/index.js'
|
|
6
|
+
export * from './ctx/index.js'
|
|
7
|
+
export * from './index.d.js'
|
|
8
|
+
export * from './metafile/index.js'
|
|
9
|
+
export * from './metafile_l0/index.js'
|
|
10
|
+
export * from './middleware/index.js'
|
|
11
|
+
export * from './rebuildjs_browser/index.js'
|
|
12
|
+
export * from './rebuildjs_server/index.js'
|
package/server/index.js
CHANGED
|
@@ -1,144 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
import { mkdir, readFile, writeFile } from 'node:fs/promises'
|
|
14
|
-
import { join, relative } from 'node:path'
|
|
15
|
-
import { cwd_, server__relative_path_, server_path_ } from '../app/index.js'
|
|
16
|
-
import { app_ctx, middleware_ctx__new } from '../ctx/index.js'
|
|
17
|
-
export const [
|
|
18
|
-
server__metafile_path$_,
|
|
19
|
-
server__metafile_path_,
|
|
20
|
-
] = be_memo_pair_(ctx=>
|
|
21
|
-
join(server_path_(ctx), 'metafile.json'),
|
|
22
|
-
{ ns: 'app', id: 'server__metafile_path' })
|
|
23
|
-
let server__metafile__waitfor_promise
|
|
24
|
-
export const [
|
|
25
|
-
server__metafile$_,
|
|
26
|
-
server__metafile_,
|
|
27
|
-
server__metafile__set
|
|
28
|
-
] = /** @type {be_lock_memosig_triple_T<rebuildjs_metafile_T>} */
|
|
29
|
-
be_lock_memosig_triple_(
|
|
30
|
-
()=>undefined,
|
|
31
|
-
{ ns: 'app', id: 'server__metafile' }
|
|
32
|
-
).add((ctx, server__metafile$)=>
|
|
33
|
-
memo_(server__metafile__waitfor_promise$=>{
|
|
34
|
-
server__metafile__waitfor_promise$.val?.cancel?.()
|
|
35
|
-
if (server__metafile$.lock) return
|
|
36
|
-
return nullish__none_([server__metafile_path_(ctx)],
|
|
37
|
-
server__metafile_path=>{
|
|
38
|
-
const server__metafile__waitfor_promise =
|
|
39
|
-
file_exists__waitfor(
|
|
40
|
-
server__metafile_path,
|
|
41
|
-
1000,
|
|
42
|
-
()=>cmd(sleep(0)))
|
|
43
|
-
cmd(server__metafile__waitfor_promise)
|
|
44
|
-
.then(async success=>{
|
|
45
|
-
if (success) {
|
|
46
|
-
server__metafile$._ = await cmd(
|
|
47
|
-
waitfor(async ()=>{
|
|
48
|
-
const buf = await cmd(readFile(server__metafile_path))
|
|
49
|
-
const json = buf + ''
|
|
50
|
-
try {
|
|
51
|
-
return JSON.parse(json)
|
|
52
|
-
} catch {
|
|
53
|
-
return undefined
|
|
54
|
-
}
|
|
55
|
-
}, 1000))
|
|
56
|
-
}
|
|
57
|
-
}).catch(err=>{
|
|
58
|
-
if (err instanceof Cancel) return
|
|
59
|
-
throw err
|
|
60
|
-
})
|
|
61
|
-
return server__metafile__waitfor_promise
|
|
62
|
-
async function cmd(promise) {
|
|
63
|
-
if (cancel_()) throw new Cancel()
|
|
64
|
-
const rv = await promise
|
|
65
|
-
if (cancel_()) {
|
|
66
|
-
promise.cancel?.()
|
|
67
|
-
throw new Cancel()
|
|
68
|
-
}
|
|
69
|
-
return rv
|
|
70
|
-
}
|
|
71
|
-
function cancel_() {
|
|
72
|
-
return (
|
|
73
|
-
server__metafile$.lock
|
|
74
|
-
|| server__metafile_path !== server__metafile_path_(ctx))
|
|
75
|
-
}
|
|
76
|
-
})
|
|
77
|
-
}))
|
|
78
|
-
export function server__metafile__persist() {
|
|
79
|
-
return nullish__none_([
|
|
80
|
-
server__metafile_path_(app_ctx),
|
|
81
|
-
server__metafile_(app_ctx)
|
|
82
|
-
], async (server__metafile_path, server__metafile)=>{
|
|
83
|
-
await mkdir(server_path_(app_ctx), { recursive: true })
|
|
84
|
-
await writeFile(
|
|
85
|
-
server__metafile_path,
|
|
86
|
-
JSON.stringify(server__metafile, null, '\t'))
|
|
87
|
-
})
|
|
88
|
-
}
|
|
89
|
-
export const [
|
|
90
|
-
server__output__relative_path_M_middleware_ctx$_,
|
|
91
|
-
server__output__relative_path_M_middleware_ctx_,
|
|
92
|
-
] = be_memo_pair_(ctx=>
|
|
93
|
-
nullish__none_([server__metafile_(ctx)],
|
|
94
|
-
server__metafile=>
|
|
95
|
-
new Map(
|
|
96
|
-
Object.keys(server__metafile.outputs)
|
|
97
|
-
.filter(server__output__relative_path=>
|
|
98
|
-
server__metafile.outputs[server__output__relative_path].entryPoint)
|
|
99
|
-
.map(server__output__relative_path=>{
|
|
100
|
-
const middleware_ctx = middleware_ctx__new()
|
|
101
|
-
server__output__relative_path__set(middleware_ctx, server__output__relative_path)
|
|
102
|
-
return [server__output__relative_path, middleware_ctx]
|
|
103
|
-
}))),
|
|
104
|
-
{
|
|
105
|
-
id: 'server__output__relative_path_M_middleware_ctx',
|
|
106
|
-
ns: 'app'
|
|
107
|
-
})
|
|
108
|
-
export const [
|
|
109
|
-
server__output__relative_path$_,
|
|
110
|
-
server__output__relative_path_,
|
|
111
|
-
server__output__relative_path__set,
|
|
112
|
-
] = be_sig_triple_(()=>
|
|
113
|
-
undefined,
|
|
114
|
-
{ ns: 'middleware', id: 'server__output__relative_path' })
|
|
115
|
-
export const [
|
|
116
|
-
server__output$_,
|
|
117
|
-
server__output_
|
|
118
|
-
] = be_memo_pair_(ctx=>
|
|
119
|
-
nullish__none_(tup(server__metafile_(ctx), server__output__relative_path_(ctx)),
|
|
120
|
-
(server__metafile, server__output__relative_path)=>
|
|
121
|
-
server__metafile.outputs[server__output__relative_path]),
|
|
122
|
-
{ ns: 'middleware', id: 'server__output' })
|
|
123
|
-
export const [
|
|
124
|
-
server__cssBundle__relative_path$_,
|
|
125
|
-
server__cssBundle__relative_path_
|
|
126
|
-
] = be_memo_pair_(ctx=>
|
|
127
|
-
server__output_(ctx)?.cssBundle,
|
|
128
|
-
{ ns: 'middleware', id: 'server__cssBundle__relative_path', })
|
|
129
|
-
export const [
|
|
130
|
-
server__cssBundle$_,
|
|
131
|
-
server__cssBundle_
|
|
132
|
-
] = be_memo_pair_(ctx=>
|
|
133
|
-
nullish__none_([server__output_(ctx)?.cssBundle],
|
|
134
|
-
cssBundle=>
|
|
135
|
-
join(cwd_(ctx), cssBundle)),
|
|
136
|
-
{ ns: 'middleware', id: 'server__cssBundle', })
|
|
137
|
-
export const [
|
|
138
|
-
server__css$_,
|
|
139
|
-
server__css_
|
|
140
|
-
] = be_memo_pair_(ctx=>
|
|
141
|
-
nullish__none_([server__relative_path_(ctx), server__cssBundle__relative_path_(ctx)],
|
|
142
|
-
(server__relative_path, server__cssBundle__relative_path)=>
|
|
143
|
-
join('/', relative(server__relative_path, server__cssBundle__relative_path))),
|
|
144
|
-
{ ns: 'middleware', id: 'server__css' })
|
|
1
|
+
export * from 'ctx-core/be'
|
|
2
|
+
export * from 'ctx-core/rmemo'
|
|
3
|
+
export * from './app/index.js'
|
|
4
|
+
export * from './asset/index.js'
|
|
5
|
+
export * from './build/index.js'
|
|
6
|
+
export * from './ctx/index.js'
|
|
7
|
+
export * from './index.d.js'
|
|
8
|
+
export * from './metafile/index.js'
|
|
9
|
+
export * from './metafile_l0/index.js'
|
|
10
|
+
export * from './middleware/index.js'
|
|
11
|
+
export * from './rebuildjs_browser/index.js'
|
|
12
|
+
export * from './rebuildjs_server/index.js'
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { ctx__be_T, ctx__get_T, memo_T } from 'ctx-core/rmemo'
|
|
2
|
-
import type { has_app_T } from '../ctx/index.js'
|
|
3
2
|
export * from '../metafile_l0/index.js'
|
|
4
3
|
export declare const metafile__build_id$_:ctx__be_T<memo_T<string>, 'app'>
|
|
5
4
|
export declare const metafile__build_id_:ctx__get_T<string, 'app'>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { be_memo_pair_, nullish__none_, rmemo__wait } from 'ctx-core/rmemo'
|
|
2
|
-
import { browser__metafile_ } from '../
|
|
2
|
+
import { browser__metafile_ } from '../rebuildjs_browser/index.js'
|
|
3
3
|
import { app_ctx } from '../ctx/index.js'
|
|
4
|
-
import { server__metafile_ } from '../
|
|
4
|
+
import { server__metafile_ } from '../rebuildjs_server/index.js'
|
|
5
5
|
export const [
|
|
6
6
|
metafile__build_id$_,
|
|
7
7
|
metafile__build_id_,
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import { sleep } from 'ctx-core/function'
|
|
3
3
|
import { test } from 'uvu'
|
|
4
4
|
import { equal } from 'uvu/assert'
|
|
5
|
-
import { browser__metafile0, server__metafile0 } from '
|
|
6
|
-
import { browser__metafile__set } from '../
|
|
5
|
+
import { browser__metafile0, server__metafile0 } from '../../_fixtures/metafiles.js'
|
|
6
|
+
import { browser__metafile__set } from '../rebuildjs_browser/index.js'
|
|
7
7
|
import { app_ctx } from '../ctx/index.js'
|
|
8
|
-
import { server__metafile__set } from '../
|
|
8
|
+
import { server__metafile__set } from '../rebuildjs_server/index.js'
|
|
9
9
|
import { metafile__wait } from './index.js'
|
|
10
10
|
test.after.each(()=>{
|
|
11
11
|
app_ctx.s.app.clear()
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Equal, Expect } from 'ctx-core/test'
|
|
2
|
+
import { test } from 'uvu'
|
|
3
|
+
import { equal } from 'uvu/assert'
|
|
4
|
+
import { app_ctx, type middleware_ctx_T } from '../ctx/index.js'
|
|
5
|
+
import { middleware_ } from './index.js'
|
|
6
|
+
test.after.each(()=>{
|
|
7
|
+
app_ctx.s.app.clear()
|
|
8
|
+
})
|
|
9
|
+
test('middleware', ()=>{
|
|
10
|
+
const fn = ()=>{
|
|
11
|
+
}
|
|
12
|
+
equal(middleware_(fn), fn)
|
|
13
|
+
})
|
|
14
|
+
test('middleware|type', ()=>{
|
|
15
|
+
type test_middleware_ctx__Parameters =
|
|
16
|
+
Expect<
|
|
17
|
+
Equal<
|
|
18
|
+
Parameters<typeof middleware_<R>>,
|
|
19
|
+
[(middleware_ctx:middleware_ctx_T)=>R]>>
|
|
20
|
+
equal({} as test_middleware_ctx__Parameters, {})
|
|
21
|
+
type test_middleware_ctx__ReturnType = Expect<
|
|
22
|
+
Equal<
|
|
23
|
+
ReturnType<typeof middleware_<R>>,
|
|
24
|
+
R>>
|
|
25
|
+
equal({} as test_middleware_ctx__ReturnType, {})
|
|
26
|
+
})
|
|
27
|
+
test.run()
|
|
28
|
+
type R = { foo:'bar' }
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { ctx__be_T, ctx__get_T, ctx__set_T, lock_memosig_T, memo_T } from 'ctx-core/rmemo'
|
|
2
|
-
import type { has_app_T, has_middleware_T } from '../ctx/index.js'
|
|
3
2
|
import type { rebuildjs_metafile_T } from '../metafile_l0/index.js'
|
|
4
3
|
export declare const browser__metafile_path$_:ctx__be_T<memo_T<string>, 'app'>
|
|
5
4
|
export declare const browser__metafile_path_:ctx__get_T<string, 'app'>
|
|
@@ -13,7 +13,7 @@ import { mkdir, readFile, writeFile } from 'node:fs/promises'
|
|
|
13
13
|
import { join, relative } from 'node:path'
|
|
14
14
|
import { browser__relative_path_, browser_path_, cwd_ } from '../app/index.js'
|
|
15
15
|
import { app_ctx } from '../ctx/index.js'
|
|
16
|
-
import { server__output_ } from '../
|
|
16
|
+
import { server__output_ } from '../rebuildjs_server/index.js'
|
|
17
17
|
export const [
|
|
18
18
|
browser__metafile_path$_,
|
|
19
19
|
browser__metafile_path_,
|
|
@@ -10,10 +10,10 @@ import {
|
|
|
10
10
|
browser__metafile1,
|
|
11
11
|
browser__metafile2,
|
|
12
12
|
server__metafile0
|
|
13
|
-
} from '
|
|
13
|
+
} from '../../_fixtures/metafiles.js'
|
|
14
14
|
import { cwd__set, dist_path__set, is_prod__set } from '../app/index.js'
|
|
15
15
|
import { app_ctx, middleware_ctx__new } from '../ctx/index.js'
|
|
16
|
-
import { server__metafile__set, server__output_, server__output__relative_path__set } from '../
|
|
16
|
+
import { server__metafile__set, server__output_, server__output__relative_path__set } from '../rebuildjs_server/index.js'
|
|
17
17
|
import {
|
|
18
18
|
browser__css$_,
|
|
19
19
|
browser__css_,
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ctx__be_T, ctx__get_T, ctx__set_T, lock_memosig_T, memo_T, sig_T } from 'ctx-core/rmemo'
|
|
2
|
+
import type { middleware_ctx_T } from '../ctx/index.js'
|
|
3
|
+
import type { rebuildjs_metafile_T } from '../metafile_l0/index.js'
|
|
4
|
+
export const server__metafile_path$_:ctx__be_T<memo_T<string>, 'app'>
|
|
5
|
+
export const server__metafile_path_:ctx__get_T<string, 'app'>
|
|
6
|
+
export const server__metafile$_:ctx__be_T<lock_memosig_T<rebuildjs_metafile_T|undefined>, 'app'>
|
|
7
|
+
export const server__metafile_:ctx__get_T<rebuildjs_metafile_T|undefined, 'app'>
|
|
8
|
+
export const server__metafile__set:ctx__set_T<rebuildjs_metafile_T|undefined, 'app'>
|
|
9
|
+
export declare function server__metafile__persist():Promise<void>
|
|
10
|
+
export const server__output__relative_path_M_middleware_ctx$_:ctx__be_T<memo_T<Map<string, middleware_ctx_T>>, 'app'>
|
|
11
|
+
export const server__output__relative_path_M_middleware_ctx_:ctx__get_T<Map<string, middleware_ctx_T>, 'app'>
|
|
12
|
+
export const server__output__relative_path$_:ctx__be_T<sig_T<string>, 'middleware'>
|
|
13
|
+
export const server__output__relative_path_:ctx__get_T<string, 'middleware'>
|
|
14
|
+
export const server__output__relative_path__set:ctx__set_T<string, 'middleware'>
|
|
15
|
+
export const server__output$_:ctx__be_T<memo_T<rebuildjs_metafile_T['outputs'][string]|undefined>, 'middleware'>
|
|
16
|
+
export const server__output_:ctx__get_T<rebuildjs_metafile_T['outputs'][string]|undefined, 'middleware'>
|
|
17
|
+
export const server__cssBundle__relative_path$_:ctx__be_T<memo_T<string|undefined>, 'middleware'>
|
|
18
|
+
export const server__cssBundle__relative_path_:ctx__get_T<string|undefined, 'middleware'>
|
|
19
|
+
export const server__cssBundle$_:ctx__be_T<memo_T<string|undefined>, 'middleware'>
|
|
20
|
+
export const server__cssBundle_:ctx__get_T<string|undefined, 'middleware'>
|
|
21
|
+
export const server__css$_:ctx__be_T<memo_T<string|undefined>, 'middleware'>
|
|
22
|
+
export const server__css_:ctx__get_T<string|undefined, 'middleware'>
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { file_exists__waitfor } from 'ctx-core/fs'
|
|
2
|
+
import {
|
|
3
|
+
be_lock_memosig_triple_,
|
|
4
|
+
be_memo_pair_,
|
|
5
|
+
be_sig_triple_,
|
|
6
|
+
Cancel,
|
|
7
|
+
memo_,
|
|
8
|
+
nullish__none_,
|
|
9
|
+
sleep,
|
|
10
|
+
tup,
|
|
11
|
+
waitfor
|
|
12
|
+
} from 'ctx-core/rmemo'
|
|
13
|
+
import { mkdir, readFile, writeFile } from 'node:fs/promises'
|
|
14
|
+
import { join, relative } from 'node:path'
|
|
15
|
+
import { cwd_, server__relative_path_, server_path_ } from '../app/index.js'
|
|
16
|
+
import { app_ctx, middleware_ctx__new } from '../ctx/index.js'
|
|
17
|
+
export const [
|
|
18
|
+
server__metafile_path$_,
|
|
19
|
+
server__metafile_path_,
|
|
20
|
+
] = be_memo_pair_(ctx=>
|
|
21
|
+
join(server_path_(ctx), 'metafile.json'),
|
|
22
|
+
{ ns: 'app', id: 'server__metafile_path' })
|
|
23
|
+
export const [
|
|
24
|
+
server__metafile$_,
|
|
25
|
+
server__metafile_,
|
|
26
|
+
server__metafile__set
|
|
27
|
+
] = /** @type {be_lock_memosig_triple_T<rebuildjs_metafile_T>} */
|
|
28
|
+
be_lock_memosig_triple_(
|
|
29
|
+
()=>undefined,
|
|
30
|
+
{ ns: 'app', id: 'server__metafile' }
|
|
31
|
+
).add((ctx, server__metafile$)=>
|
|
32
|
+
memo_(server__metafile__waitfor_promise$=>{
|
|
33
|
+
server__metafile__waitfor_promise$.val?.cancel?.()
|
|
34
|
+
if (server__metafile$.lock) return
|
|
35
|
+
return nullish__none_([server__metafile_path_(ctx)],
|
|
36
|
+
server__metafile_path=>{
|
|
37
|
+
const server__metafile__waitfor_promise =
|
|
38
|
+
file_exists__waitfor(
|
|
39
|
+
server__metafile_path,
|
|
40
|
+
1000,
|
|
41
|
+
()=>cmd(sleep(0)))
|
|
42
|
+
cmd(server__metafile__waitfor_promise)
|
|
43
|
+
.then(async success=>{
|
|
44
|
+
if (success) {
|
|
45
|
+
server__metafile$._ = await cmd(
|
|
46
|
+
waitfor(async ()=>{
|
|
47
|
+
const buf = await cmd(readFile(server__metafile_path))
|
|
48
|
+
const json = buf + ''
|
|
49
|
+
try {
|
|
50
|
+
return JSON.parse(json)
|
|
51
|
+
} catch {
|
|
52
|
+
return undefined
|
|
53
|
+
}
|
|
54
|
+
}, 1000))
|
|
55
|
+
}
|
|
56
|
+
}).catch(err=>{
|
|
57
|
+
if (err instanceof Cancel) return
|
|
58
|
+
throw err
|
|
59
|
+
})
|
|
60
|
+
return server__metafile__waitfor_promise
|
|
61
|
+
async function cmd(promise) {
|
|
62
|
+
if (cancel_()) throw new Cancel()
|
|
63
|
+
const rv = await promise
|
|
64
|
+
if (cancel_()) {
|
|
65
|
+
promise.cancel?.()
|
|
66
|
+
throw new Cancel()
|
|
67
|
+
}
|
|
68
|
+
return rv
|
|
69
|
+
}
|
|
70
|
+
function cancel_() {
|
|
71
|
+
return (
|
|
72
|
+
server__metafile$.lock
|
|
73
|
+
|| server__metafile_path !== server__metafile_path_(ctx))
|
|
74
|
+
}
|
|
75
|
+
})
|
|
76
|
+
}))
|
|
77
|
+
export function server__metafile__persist() {
|
|
78
|
+
return nullish__none_([
|
|
79
|
+
server__metafile_path_(app_ctx),
|
|
80
|
+
server__metafile_(app_ctx)
|
|
81
|
+
], async (server__metafile_path, server__metafile)=>{
|
|
82
|
+
await mkdir(server_path_(app_ctx), { recursive: true })
|
|
83
|
+
await writeFile(
|
|
84
|
+
server__metafile_path,
|
|
85
|
+
JSON.stringify(server__metafile, null, '\t'))
|
|
86
|
+
})
|
|
87
|
+
}
|
|
88
|
+
export const [
|
|
89
|
+
server__output__relative_path_M_middleware_ctx$_,
|
|
90
|
+
server__output__relative_path_M_middleware_ctx_,
|
|
91
|
+
] = be_memo_pair_(ctx=>
|
|
92
|
+
nullish__none_([server__metafile_(ctx)],
|
|
93
|
+
server__metafile=>
|
|
94
|
+
new Map(
|
|
95
|
+
Object.keys(server__metafile.outputs)
|
|
96
|
+
.filter(server__output__relative_path=>
|
|
97
|
+
server__metafile.outputs[server__output__relative_path].entryPoint)
|
|
98
|
+
.map(server__output__relative_path=>{
|
|
99
|
+
const middleware_ctx = middleware_ctx__new()
|
|
100
|
+
server__output__relative_path__set(middleware_ctx, server__output__relative_path)
|
|
101
|
+
return [server__output__relative_path, middleware_ctx]
|
|
102
|
+
}))),
|
|
103
|
+
{
|
|
104
|
+
id: 'server__output__relative_path_M_middleware_ctx',
|
|
105
|
+
ns: 'app'
|
|
106
|
+
})
|
|
107
|
+
export const [
|
|
108
|
+
server__output__relative_path$_,
|
|
109
|
+
server__output__relative_path_,
|
|
110
|
+
server__output__relative_path__set,
|
|
111
|
+
] = be_sig_triple_(()=>
|
|
112
|
+
undefined,
|
|
113
|
+
{ ns: 'middleware', id: 'server__output__relative_path' })
|
|
114
|
+
export const [
|
|
115
|
+
server__output$_,
|
|
116
|
+
server__output_
|
|
117
|
+
] = be_memo_pair_(ctx=>
|
|
118
|
+
nullish__none_(tup(server__metafile_(ctx), server__output__relative_path_(ctx)),
|
|
119
|
+
(server__metafile, server__output__relative_path)=>
|
|
120
|
+
server__metafile.outputs[server__output__relative_path]),
|
|
121
|
+
{ ns: 'middleware', id: 'server__output' })
|
|
122
|
+
export const [
|
|
123
|
+
server__cssBundle__relative_path$_,
|
|
124
|
+
server__cssBundle__relative_path_
|
|
125
|
+
] = be_memo_pair_(ctx=>
|
|
126
|
+
server__output_(ctx)?.cssBundle,
|
|
127
|
+
{ ns: 'middleware', id: 'server__cssBundle__relative_path', })
|
|
128
|
+
export const [
|
|
129
|
+
server__cssBundle$_,
|
|
130
|
+
server__cssBundle_
|
|
131
|
+
] = be_memo_pair_(ctx=>
|
|
132
|
+
nullish__none_([server__output_(ctx)?.cssBundle],
|
|
133
|
+
cssBundle=>
|
|
134
|
+
join(cwd_(ctx), cssBundle)),
|
|
135
|
+
{ ns: 'middleware', id: 'server__cssBundle', })
|
|
136
|
+
export const [
|
|
137
|
+
server__css$_,
|
|
138
|
+
server__css_
|
|
139
|
+
] = be_memo_pair_(ctx=>
|
|
140
|
+
nullish__none_([server__relative_path_(ctx), server__cssBundle__relative_path_(ctx)],
|
|
141
|
+
(server__relative_path, server__cssBundle__relative_path)=>
|
|
142
|
+
join('/', relative(server__relative_path, server__cssBundle__relative_path))),
|
|
143
|
+
{ ns: 'middleware', id: 'server__css' })
|
|
@@ -5,7 +5,7 @@ import { rmemo__wait } from 'ctx-core/rmemo'
|
|
|
5
5
|
import esmock from 'esmock'
|
|
6
6
|
import { test } from 'uvu'
|
|
7
7
|
import { equal, throws } from 'uvu/assert'
|
|
8
|
-
import { server__metafile0, server__metafile1, server__metafile2 } from '
|
|
8
|
+
import { server__metafile0, server__metafile1, server__metafile2 } from '../../_fixtures/metafiles.js'
|
|
9
9
|
import { cwd__set, dist_path_, dist_path__set, is_prod__set, server_path_ } from '../app/index.js'
|
|
10
10
|
import { app_ctx, middleware_ctx__new } from '../ctx/index.js'
|
|
11
11
|
import {
|
package/middleware/index.test.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { Equal, Expect } from 'ctx-core/test'
|
|
2
|
-
import { test } from 'uvu'
|
|
3
|
-
import { equal } from 'uvu/assert'
|
|
4
|
-
import { app_ctx, middleware_ctx_T } from '../ctx/index.js'
|
|
5
|
-
import { middleware_ } from './index.js'
|
|
6
|
-
test.after.each(()=>{
|
|
7
|
-
app_ctx.s.app.clear()
|
|
8
|
-
})
|
|
9
|
-
test('middleware', ()=>{
|
|
10
|
-
const fn = ()=>{}
|
|
11
|
-
equal(middleware_(fn), fn)
|
|
12
|
-
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
13
|
-
type test_middleware_ctx__Parameters = Expect<Equal<Parameters<typeof middleware_<R>>, [(middleware_ctx:middleware_ctx_T)=>R]>>
|
|
14
|
-
type test_middleware_ctx__ReturnType = Expect<Equal<ReturnType<typeof middleware_<R>>, R>>
|
|
15
|
-
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
16
|
-
})
|
|
17
|
-
test.run()
|
|
18
|
-
type R = { foo: 'bar' }
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|