@primate/core 0.4.6 → 0.5.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/lib/private/App.d.ts +531 -3
- package/lib/private/App.js +8 -3
- package/lib/private/Binder.d.ts +2 -2
- package/lib/private/Flags.d.ts +3 -3
- package/lib/private/Module.d.ts +5 -5
- package/lib/private/app/Facade.d.ts +566 -0
- package/lib/private/app/Facade.js +33 -0
- package/lib/private/asset/Asset.d.ts +1 -1
- package/lib/private/backend/Module.d.ts +1 -1
- package/lib/private/backend/Module.js +2 -5
- package/lib/private/backend/TAG.d.ts +1 -1
- package/lib/private/backend/TAG.js +1 -1
- package/lib/private/build/App.d.ts +2 -2
- package/lib/private/build/App.js +0 -2
- package/lib/private/build/client/index.js +11 -7
- package/lib/private/build/hook.js +4 -3
- package/lib/private/build/index.js +14 -13
- package/lib/private/build/presets.d.ts +10 -0
- package/lib/private/build/presets.js +39 -0
- package/lib/private/build/server/index.js +5 -7
- package/lib/private/build/server/plugin/assets.js +9 -7
- package/lib/private/build/server/plugin/config.js +11 -4
- package/lib/private/build/server/plugin/db-default.d.ts +4 -0
- package/lib/private/build/server/plugin/db-default.js +45 -0
- package/lib/private/build/server/plugin/frontend.js +4 -2
- package/lib/private/build/server/plugin/live-reload.d.ts +4 -0
- package/lib/private/build/server/plugin/{hot-reload.js → live-reload.js} +4 -4
- package/lib/private/build/server/plugin/native-addons.js +6 -4
- package/lib/private/build/server/plugin/node-imports.js +2 -2
- package/lib/private/build/server/plugin/route.js +2 -2
- package/lib/private/build/server/plugin/store-wrap.js +2 -2
- package/lib/private/build/server/plugin/store.js +6 -6
- package/lib/private/build/server/plugin/stores.js +4 -5
- package/lib/private/build/server/plugin/view.js +4 -4
- package/lib/private/build/server/plugin/views.js +4 -4
- package/lib/private/build/server/plugin/virtual-pages.js +8 -8
- package/lib/private/build/server/plugin/virtual-routes.js +8 -13
- package/lib/private/build/server/plugin/wasm.js +2 -3
- package/lib/private/bye.js +2 -3
- package/lib/private/client/Data.d.ts +1 -1
- package/lib/private/client/ValidateInit.d.ts +1 -3
- package/lib/private/client/ValidationError.d.ts +1 -1
- package/lib/private/client/app.js +2 -1
- package/lib/private/client/create-form.d.ts +31 -0
- package/lib/private/client/create-form.js +124 -0
- package/lib/private/client/extract-issues.d.ts +4 -0
- package/lib/private/client/extract-issues.js +20 -0
- package/lib/private/client/spa/index.d.ts +1 -1
- package/lib/private/client/spa/index.js +4 -5
- package/lib/private/client/{toValidated.d.ts → to-validated.d.ts} +2 -4
- package/lib/private/client/{toValidated.js → to-validated.js} +1 -1
- package/lib/private/client/validate-field.d.ts +3 -0
- package/lib/private/client/validate-field.js +41 -0
- package/lib/private/config/index.d.ts +2 -21
- package/lib/private/config/index.js +3 -1
- package/lib/private/config/schema.d.ts +13 -9
- package/lib/private/config/schema.js +10 -5
- package/lib/private/cookie.d.ts +5 -5
- package/lib/private/cookie.js +10 -14
- package/lib/private/db/As.d.ts +10 -0
- package/lib/private/db/DB.d.ts +33 -0
- package/lib/private/db/DB.js +2 -0
- package/lib/private/db/DataDict.d.ts +5 -0
- package/lib/private/db/DataKey.d.ts +4 -0
- package/lib/private/db/DataValue.d.ts +17 -0
- package/lib/private/db/MemoryDB.d.ts +35 -0
- package/lib/private/db/MemoryDB.js +317 -0
- package/lib/private/db/PK.d.ts +3 -0
- package/lib/private/db/PK.js +2 -0
- package/lib/private/{database → db}/Query.d.ts +2 -2
- package/lib/private/{database → db}/QueryBuilder.d.ts +2 -3
- package/lib/private/db/ReadArgs.d.ts +9 -0
- package/lib/private/db/ReadArgs.js +2 -0
- package/lib/private/db/ReadRelationsArgs.d.ts +6 -0
- package/lib/private/db/ReadRelationsArgs.js +2 -0
- package/lib/private/{database → db}/Schema.d.ts +1 -2
- package/lib/private/db/Sort.d.ts +4 -0
- package/lib/private/{database → db}/TypeMap.d.ts +2 -3
- package/lib/private/{database → db}/Types.d.ts +1 -1
- package/lib/private/db/With.d.ts +16 -0
- package/lib/private/db/With.js +2 -0
- package/lib/private/db/common.d.ts +18 -0
- package/lib/private/db/common.js +36 -0
- package/lib/private/db/error.d.ts +81 -0
- package/lib/private/db/error.js +199 -0
- package/lib/private/db/sql.d.ts +28 -0
- package/lib/private/db/sql.js +177 -0
- package/lib/private/db/storage.d.ts +3 -0
- package/lib/private/db/storage.js +3 -0
- package/lib/private/db/symbol/wrap.js +2 -0
- package/lib/private/db/symbol.js +2 -0
- package/lib/private/db/test.d.ts +4 -0
- package/lib/private/db/test.js +1384 -0
- package/lib/private/frontend/Module.d.ts +6 -6
- package/lib/private/frontend/Module.js +28 -23
- package/lib/private/frontend/Render.d.ts +1 -2
- package/lib/private/frontend/ServerData.d.ts +1 -1
- package/lib/private/frontend/ServerView.d.ts +1 -2
- package/lib/private/frontend/View.d.ts +1 -1
- package/lib/private/frontend/ViewOptions.d.ts +1 -1
- package/lib/private/frontend/ViewResponse.d.ts +1 -1
- package/lib/private/hash.js +0 -1
- package/lib/private/i18n/Catalog.d.ts +5 -2
- package/lib/private/i18n/Formatter.js +20 -8
- package/lib/private/i18n/Module.d.ts +3 -3
- package/lib/private/i18n/Module.js +28 -17
- package/lib/private/i18n/format.d.ts +4 -0
- package/lib/private/i18n/format.js +95 -0
- package/lib/private/i18n/index/client.d.ts +9 -0
- package/lib/private/i18n/index/client.js +152 -0
- package/lib/private/i18n/index/server.d.ts +9 -0
- package/lib/private/i18n/index/server.js +57 -0
- package/lib/private/i18n/index/types.d.ts +33 -0
- package/lib/private/i18n/index/types.js +2 -0
- package/lib/private/i18n/locale.d.ts +9 -3
- package/lib/private/i18n/ordinals.d.ts +1 -1
- package/lib/private/i18n/resolve.d.ts +7 -0
- package/lib/private/i18n/resolve.js +30 -0
- package/lib/private/i18n/schema.d.ts +4 -4
- package/lib/private/i18n/schema.js +6 -10
- package/lib/private/i18n/storage.d.ts +3 -0
- package/lib/private/i18n/storage.js +5 -0
- package/lib/private/i18n/validate.d.ts +2 -0
- package/lib/private/i18n/validate.js +21 -0
- package/lib/private/log.d.ts +1 -0
- package/lib/private/log.js +10 -10
- package/lib/private/module/Hook.d.ts +1 -1
- package/lib/private/module/Next.d.ts +1 -1
- package/lib/private/orm/ForeignKey.d.ts +11 -0
- package/lib/private/orm/ForeignKey.js +22 -0
- package/lib/private/orm/PrimaryKey.d.ts +15 -0
- package/lib/private/orm/PrimaryKey.js +35 -0
- package/lib/private/orm/Set.d.ts +11 -0
- package/lib/private/orm/Set.js +2 -0
- package/lib/private/orm/Store.d.ts +171 -0
- package/lib/private/orm/Store.js +518 -0
- package/lib/private/orm/foreign.d.ts +4 -0
- package/lib/private/orm/foreign.js +5 -0
- package/lib/private/orm/key.d.ts +8 -0
- package/lib/private/orm/key.js +4 -0
- package/lib/private/orm/parse.d.ts +12 -0
- package/lib/private/orm/parse.js +29 -0
- package/lib/private/orm/primary.d.ts +5 -0
- package/lib/private/orm/primary.js +5 -0
- package/lib/private/orm/relation.d.ts +43 -0
- package/lib/private/orm/relation.js +26 -0
- package/lib/private/orm/types.d.ts +18 -0
- package/lib/private/orm/types.js +2 -0
- package/lib/private/orm/wrap.d.ts +5 -0
- package/lib/private/orm/wrap.js +5 -0
- package/lib/private/paths.d.ts +2 -2
- package/lib/private/request/RequestBag.d.ts +1 -1
- package/lib/private/request/RequestBag.js +11 -7
- package/lib/private/request/RequestBody.d.ts +2 -4
- package/lib/private/request/RequestBody.js +8 -11
- package/lib/private/request/RequestContext.d.ts +12 -0
- package/lib/private/request/RequestContext.js +31 -0
- package/lib/private/request/RequestFacade.d.ts +16 -6
- package/lib/private/request/parse.d.ts +2 -2
- package/lib/private/request/parse.js +54 -16
- package/lib/private/request/route.js +37 -21
- package/lib/private/request/router.d.ts +1 -1
- package/lib/private/request/router.js +2 -2
- package/lib/private/request/sContext.d.ts +3 -0
- package/lib/private/request/sContext.js +2 -0
- package/lib/private/response/ResponseFunction.d.ts +1 -2
- package/lib/private/response/ResponseLike.d.ts +1 -1
- package/lib/private/response/binary.d.ts +1 -1
- package/lib/private/response/binary.js +4 -3
- package/lib/private/response/json.d.ts +1 -1
- package/lib/private/response/json.js +2 -2
- package/lib/private/response/redirect.js +1 -1
- package/lib/private/response/respond.js +7 -10
- package/lib/private/response/sse.d.ts +1 -1
- package/lib/private/response/sse.js +2 -2
- package/lib/private/response/text.d.ts +1 -1
- package/lib/private/response/text.js +3 -3
- package/lib/private/response/view.d.ts +2 -2
- package/lib/private/response/view.js +3 -3
- package/lib/private/response.d.ts +1 -1
- package/lib/private/route/Handler.d.ts +1 -1
- package/lib/private/route/hook.d.ts +6 -0
- package/lib/private/route/hook.js +5 -0
- package/lib/private/route/router.d.ts +9 -5
- package/lib/private/route/router.js +34 -17
- package/lib/private/route/wrap.js +2 -2
- package/lib/private/serve/App.d.ts +5 -18
- package/lib/private/serve/App.js +91 -82
- package/lib/private/serve/Init.d.ts +3 -3
- package/lib/private/serve/hook.js +1 -7
- package/lib/private/serve/index.js +6 -2
- package/lib/private/serve/module/Dev.d.ts +1 -1
- package/lib/private/serve/module/Dev.js +9 -5
- package/lib/private/serve/module/Handle.js +2 -2
- package/lib/private/session/Data.d.ts +1 -2
- package/lib/private/session/SessionHandle.d.ts +1 -1
- package/lib/private/session/SessionHandle.js +10 -9
- package/lib/private/session/SessionModule.js +7 -7
- package/lib/private/session/index.d.ts +3 -4
- package/lib/private/session/schema.d.ts +6 -6
- package/lib/private/session/schema.js +5 -4
- package/lib/private/session/storage.d.ts +1 -2
- package/lib/private/session/storage.js +2 -2
- package/lib/private/tags.js +2 -2
- package/lib/private/target/Target.d.ts +1 -1
- package/lib/public/AppFacade.d.ts +2 -0
- package/lib/public/AppFacade.js +2 -0
- package/lib/public/build/presets.d.ts +2 -0
- package/lib/public/build/presets.js +2 -0
- package/lib/public/build/transform.d.ts +2 -0
- package/lib/public/build/transform.js +2 -0
- package/lib/public/client.d.ts +14 -0
- package/lib/public/client.js +10 -0
- package/lib/public/db/MemoryDB.d.ts +2 -0
- package/lib/public/db/MemoryDB.js +2 -0
- package/lib/public/db/error.d.ts +2 -0
- package/lib/public/db/error.js +2 -0
- package/lib/public/db/sql.d.ts +2 -0
- package/lib/public/db/sql.js +2 -0
- package/lib/public/db/test.d.ts +2 -0
- package/lib/public/db/test.js +2 -0
- package/lib/public/db.d.ts +12 -0
- package/lib/public/db.js +2 -0
- package/lib/public/orm/Store.d.ts +2 -0
- package/lib/public/orm/Store.js +2 -0
- package/lib/public/orm/key.d.ts +2 -0
- package/lib/public/orm/key.js +2 -0
- package/lib/public/orm/relation.d.ts +2 -0
- package/lib/public/orm/relation.js +2 -0
- package/lib/public/orm/wrap.d.ts +2 -0
- package/lib/public/orm/wrap.js +2 -0
- package/lib/public/request.d.ts +4 -0
- package/lib/public/request.js +2 -0
- package/lib/public/response.d.ts +22 -0
- package/lib/public/response.js +19 -0
- package/lib/public/route/hook.d.ts +2 -0
- package/lib/public/route/hook.js +2 -0
- package/package.json +28 -23
- package/lib/private/build/client/reload.d.ts +0 -7
- package/lib/private/build/client/reload.js +0 -6
- package/lib/private/build/server/plugin/database-default.d.ts +0 -4
- package/lib/private/build/server/plugin/database-default.js +0 -48
- package/lib/private/build/server/plugin/hot-reload.d.ts +0 -4
- package/lib/private/client/validate.d.ts +0 -3
- package/lib/private/client/validate.js +0 -54
- package/lib/private/database/As.d.ts +0 -7
- package/lib/private/database/Binds.d.ts +0 -4
- package/lib/private/database/Binds.js +0 -2
- package/lib/private/database/Changes.d.ts +0 -11
- package/lib/private/database/Changes.js +0 -2
- package/lib/private/database/ColumnTypes.d.ts +0 -11
- package/lib/private/database/ColumnTypes.js +0 -2
- package/lib/private/database/DataDict.d.ts +0 -5
- package/lib/private/database/DataKey.d.ts +0 -4
- package/lib/private/database/DataValue.d.ts +0 -5
- package/lib/private/database/Database.d.ts +0 -56
- package/lib/private/database/Database.js +0 -153
- package/lib/private/database/InMemoryDatabase.d.ts +0 -37
- package/lib/private/database/InMemoryDatabase.js +0 -181
- package/lib/private/database/Sort.d.ts +0 -4
- package/lib/private/database/Store.d.ts +0 -172
- package/lib/private/database/Store.js +0 -261
- package/lib/private/database/storage.d.ts +0 -4
- package/lib/private/database/storage.js +0 -3
- package/lib/private/database/symbol/wrap.js +0 -2
- package/lib/private/database/symbol.js +0 -2
- package/lib/private/database/test.d.ts +0 -4
- package/lib/private/database/test.js +0 -678
- package/lib/private/database/wrap.d.ts +0 -5
- package/lib/private/database/wrap.js +0 -5
- package/lib/private/i18n/index.d.ts +0 -28
- package/lib/private/i18n/index.js +0 -236
- package/lib/private/route/guard.d.ts +0 -4
- package/lib/private/route/guard.js +0 -22
- package/lib/private/wasm/API.d.ts +0 -7
- package/lib/private/wasm/API.js +0 -2
- package/lib/private/wasm/BufferViewSource.d.ts +0 -4
- package/lib/private/wasm/BufferViewSource.js +0 -2
- package/lib/private/wasm/Exports.d.ts +0 -23
- package/lib/private/wasm/Exports.js +0 -2
- package/lib/private/wasm/I32.d.ts +0 -5
- package/lib/private/wasm/I32.js +0 -2
- package/lib/private/wasm/I32_SIZE.d.ts +0 -3
- package/lib/private/wasm/I32_SIZE.js +0 -2
- package/lib/private/wasm/Instantiation.d.ts +0 -12
- package/lib/private/wasm/Instantiation.js +0 -2
- package/lib/private/wasm/Tagged.d.ts +0 -7
- package/lib/private/wasm/Tagged.js +0 -2
- package/lib/private/wasm/buffersize.d.ts +0 -2
- package/lib/private/wasm/buffersize.js +0 -5
- package/lib/private/wasm/decode-bytes.d.ts +0 -3
- package/lib/private/wasm/decode-bytes.js +0 -5
- package/lib/private/wasm/decode-json.d.ts +0 -7
- package/lib/private/wasm/decode-json.js +0 -11
- package/lib/private/wasm/decode-option.d.ts +0 -5
- package/lib/private/wasm/decode-option.js +0 -10
- package/lib/private/wasm/decode-response.d.ts +0 -19
- package/lib/private/wasm/decode-response.js +0 -90
- package/lib/private/wasm/decode-string.d.ts +0 -3
- package/lib/private/wasm/decode-string.js +0 -5
- package/lib/private/wasm/decode-websocket-close.d.ts +0 -5
- package/lib/private/wasm/decode-websocket-close.js +0 -6
- package/lib/private/wasm/decode-websocket-send.d.ts +0 -6
- package/lib/private/wasm/decode-websocket-send.js +0 -19
- package/lib/private/wasm/encode-buffer.d.ts +0 -3
- package/lib/private/wasm/encode-buffer.js +0 -6
- package/lib/private/wasm/encode-request.d.ts +0 -9
- package/lib/private/wasm/encode-request.js +0 -195
- package/lib/private/wasm/encode-session.d.ts +0 -3
- package/lib/private/wasm/encode-session.js +0 -25
- package/lib/private/wasm/encode-string-map.d.ts +0 -5
- package/lib/private/wasm/encode-string-map.js +0 -14
- package/lib/private/wasm/encode-string.d.ts +0 -13
- package/lib/private/wasm/encode-string.js +0 -17
- package/lib/private/wasm/encode-url.d.ts +0 -11
- package/lib/private/wasm/encode-url.js +0 -14
- package/lib/private/wasm/encode-websocket-close.d.ts +0 -2
- package/lib/private/wasm/encode-websocket-close.js +0 -7
- package/lib/private/wasm/encode-websocket-message.d.ts +0 -4
- package/lib/private/wasm/encode-websocket-message.js +0 -30
- package/lib/private/wasm/encode-websocket-open.d.ts +0 -2
- package/lib/private/wasm/encode-websocket-open.js +0 -7
- package/lib/private/wasm/filesize.d.ts +0 -2
- package/lib/private/wasm/filesize.js +0 -8
- package/lib/private/wasm/instantiate.d.ts +0 -37
- package/lib/private/wasm/instantiate.js +0 -408
- package/lib/private/wasm/open-websocket.d.ts +0 -4
- package/lib/private/wasm/open-websocket.js +0 -26
- package/lib/private/wasm/stringsize.d.ts +0 -3
- package/lib/private/wasm/stringsize.js +0 -5
- package/lib/private/wasm/urlsize.d.ts +0 -2
- package/lib/private/wasm/urlsize.js +0 -5
- package/lib/public/Database.d.ts +0 -2
- package/lib/public/Database.js +0 -2
- package/lib/public/client/ValidateInit.d.ts +0 -2
- package/lib/public/client/ValidateInit.js +0 -2
- package/lib/public/client/ValidateUpdater.d.ts +0 -2
- package/lib/public/client/ValidateUpdater.js +0 -2
- package/lib/public/client/ValidationError.d.ts +0 -2
- package/lib/public/client/ValidationError.js +0 -2
- package/lib/public/client/toValidated.d.ts +0 -2
- package/lib/public/client/toValidated.js +0 -2
- package/lib/public/client/validate.d.ts +0 -2
- package/lib/public/client/validate.js +0 -2
- package/lib/public/database/As.d.ts +0 -2
- package/lib/public/database/As.js +0 -2
- package/lib/public/database/DataDict.d.ts +0 -2
- package/lib/public/database/DataDict.js +0 -2
- package/lib/public/database/InMemoryDatabase.d.ts +0 -2
- package/lib/public/database/InMemoryDatabase.js +0 -2
- package/lib/public/database/Sort.d.ts +0 -2
- package/lib/public/database/Sort.js +0 -2
- package/lib/public/database/Store.d.ts +0 -2
- package/lib/public/database/Store.js +0 -2
- package/lib/public/database/TypeMap.d.ts +0 -2
- package/lib/public/database/TypeMap.js +0 -2
- package/lib/public/database/Types.d.ts +0 -2
- package/lib/public/database/Types.js +0 -2
- package/lib/public/database/test.d.ts +0 -2
- package/lib/public/database/test.js +0 -2
- package/lib/public/database/wrap.d.ts +0 -2
- package/lib/public/database/wrap.js +0 -2
- package/lib/public/request/RequestBody.d.ts +0 -2
- package/lib/public/request/RequestBody.js +0 -2
- package/lib/public/request/RequestFacade.d.ts +0 -2
- package/lib/public/request/RequestFacade.js +0 -2
- package/lib/public/request/Verb.d.ts +0 -2
- package/lib/public/request/Verb.js +0 -2
- package/lib/public/response/ResponseFunction.d.ts +0 -2
- package/lib/public/response/ResponseFunction.js +0 -2
- package/lib/public/response/ResponseLike.d.ts +0 -2
- package/lib/public/response/ResponseLike.js +0 -2
- package/lib/public/response/binary.d.ts +0 -2
- package/lib/public/response/binary.js +0 -2
- package/lib/public/response/error.d.ts +0 -2
- package/lib/public/response/error.js +0 -2
- package/lib/public/response/json.d.ts +0 -2
- package/lib/public/response/json.js +0 -2
- package/lib/public/response/redirect.d.ts +0 -2
- package/lib/public/response/redirect.js +0 -2
- package/lib/public/response/sse.d.ts +0 -2
- package/lib/public/response/sse.js +0 -2
- package/lib/public/response/text.d.ts +0 -2
- package/lib/public/response/text.js +0 -2
- package/lib/public/response/view.d.ts +0 -2
- package/lib/public/response/view.js +0 -2
- package/lib/public/response/ws.d.ts +0 -2
- package/lib/public/response/ws.js +0 -2
- package/lib/public/wasm/decode-json.d.ts +0 -5
- package/lib/public/wasm/decode-json.js +0 -3
- package/lib/public/wasm/decode-response.d.ts +0 -3
- package/lib/public/wasm/decode-response.js +0 -3
- package/lib/public/wasm/encode-request.d.ts +0 -3
- package/lib/public/wasm/encode-request.js +0 -3
- package/lib/public/wasm/encode-session.d.ts +0 -3
- package/lib/public/wasm/encode-session.js +0 -3
- package/lib/public/wasm/instantiate.d.ts +0 -4
- package/lib/public/wasm/instantiate.js +0 -3
- /package/lib/private/{database → db}/As.js +0 -0
- /package/lib/private/{database → db}/DataDict.js +0 -0
- /package/lib/private/{database → db}/DataKey.js +0 -0
- /package/lib/private/{database → db}/DataValue.js +0 -0
- /package/lib/private/{database → db}/Query.js +0 -0
- /package/lib/private/{database → db}/QueryBuilder.js +0 -0
- /package/lib/private/{database → db}/Schema.js +0 -0
- /package/lib/private/{database → db}/Sort.js +0 -0
- /package/lib/private/{database → db}/TypeMap.js +0 -0
- /package/lib/private/{database → db}/Types.js +0 -0
- /package/lib/private/{database → db}/primary.d.ts +0 -0
- /package/lib/private/{database → db}/primary.js +0 -0
- /package/lib/private/{database → db}/symbol/wrap.d.ts +0 -0
- /package/lib/private/{database → db}/symbol.d.ts +0 -0
|
@@ -2,7 +2,6 @@ import plugin_alias from "#build/client/plugin/alias";
|
|
|
2
2
|
import plugin_entrypoint from "#build/client/plugin/entrypoint";
|
|
3
3
|
import plugin_frontend from "#build/client/plugin/frontend";
|
|
4
4
|
import plugin_server_stamp from "#build/client/plugin/server-stamp";
|
|
5
|
-
import reload from "#build/client/reload";
|
|
6
5
|
import location from "#location";
|
|
7
6
|
import * as esbuild from "esbuild";
|
|
8
7
|
const write_bootstrap = async (app, mode) => {
|
|
@@ -19,7 +18,7 @@ const write_bootstrap = async (app, mode) => {
|
|
|
19
18
|
` : `
|
|
20
19
|
const session_config = undefined;
|
|
21
20
|
`}
|
|
22
|
-
import
|
|
21
|
+
import facade from "$:app";
|
|
23
22
|
|
|
24
23
|
${app.i18n_active ? `
|
|
25
24
|
import i18n from "app:config:i18n";
|
|
@@ -30,7 +29,7 @@ const write_bootstrap = async (app, mode) => {
|
|
|
30
29
|
|
|
31
30
|
const app = await serve(import.meta.url, {
|
|
32
31
|
assets,
|
|
33
|
-
|
|
32
|
+
facade,
|
|
34
33
|
routes,
|
|
35
34
|
views,
|
|
36
35
|
pages,
|
|
@@ -49,7 +48,10 @@ export default async function build_client(app) {
|
|
|
49
48
|
app.plugin("client", plugin_alias(app));
|
|
50
49
|
app.plugin("client", plugin_server_stamp(app));
|
|
51
50
|
app.plugin("client", plugin_entrypoint(app));
|
|
52
|
-
const imports = await app.path.static.
|
|
51
|
+
const imports = await app.path.static.files({
|
|
52
|
+
recursive: true,
|
|
53
|
+
filter: file => /\.(?:js|ts|css)$/.test(file.path),
|
|
54
|
+
});
|
|
53
55
|
imports.forEach(file => {
|
|
54
56
|
const src = file.debase(app.path.static);
|
|
55
57
|
app.entrypoint(`import "./${location.static}${src}";`);
|
|
@@ -66,11 +68,13 @@ export default async function build_client(app) {
|
|
|
66
68
|
bundle: true,
|
|
67
69
|
format: "esm",
|
|
68
70
|
};
|
|
71
|
+
const NO_HR = app.config("livereload.exclude") ?? [];
|
|
69
72
|
const mode_options = app.mode === "development"
|
|
70
73
|
? {
|
|
71
74
|
banner: {
|
|
72
|
-
js: `
|
|
73
|
-
|
|
75
|
+
js: `const NO_HR=${JSON.stringify(NO_HR)};
|
|
76
|
+
new EventSource("/esbuild").addEventListener("change",
|
|
77
|
+
() => !NO_HR.includes(location.pathname) && location.reload());`,
|
|
74
78
|
},
|
|
75
79
|
entryNames: "app",
|
|
76
80
|
minify: false,
|
|
@@ -86,7 +90,7 @@ export default async function build_client(app) {
|
|
|
86
90
|
const context = await esbuild.context(options);
|
|
87
91
|
await context.watch();
|
|
88
92
|
await context.rebuild();
|
|
89
|
-
await context.serve(
|
|
93
|
+
await context.serve(app.livereload);
|
|
90
94
|
}
|
|
91
95
|
else {
|
|
92
96
|
await esbuild.build(options);
|
|
@@ -6,8 +6,9 @@ import log from "#log";
|
|
|
6
6
|
import reducer from "#reducer";
|
|
7
7
|
import $router from "#request/router";
|
|
8
8
|
import s_layout_depth from "#symbol/layout-depth";
|
|
9
|
-
import
|
|
10
|
-
|
|
9
|
+
import c from "@rcompat/cli/color";
|
|
10
|
+
import fs from "@rcompat/fs";
|
|
11
|
+
const core_pkg = await fs.project.package(import.meta.dirname);
|
|
11
12
|
const { version } = await core_pkg.json();
|
|
12
13
|
async function pre(app) {
|
|
13
14
|
const dot_primate = app.path.build.join(".primate");
|
|
@@ -40,7 +41,7 @@ async function pre(app) {
|
|
|
40
41
|
async function post(app) {
|
|
41
42
|
await build_client(app);
|
|
42
43
|
await build_server(app);
|
|
43
|
-
log.
|
|
44
|
+
log.print(`✓ build path ${c.dim(app.path.build.path)}\n`);
|
|
44
45
|
app.cleanup();
|
|
45
46
|
return app;
|
|
46
47
|
}
|
|
@@ -2,24 +2,25 @@ import BuildApp from "#build/App";
|
|
|
2
2
|
import bye from "#bye";
|
|
3
3
|
import default_config from "#config/index";
|
|
4
4
|
import fail from "#fail";
|
|
5
|
-
import log from "#log";
|
|
6
|
-
import root from "@rcompat/fs/project/root";
|
|
7
|
-
import empty from "@rcompat/record/empty";
|
|
8
5
|
import Flags from "#Flags";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
import log from "#log";
|
|
7
|
+
import dict from "@rcompat/dict";
|
|
8
|
+
import fs from "@rcompat/fs";
|
|
9
|
+
import { s_config } from "#app/Facade";
|
|
10
|
+
const no_config = (config) => config === undefined || dict.empty(config);
|
|
11
|
+
const find_config = async (root) => {
|
|
12
|
+
const ts_config = root.join("config/app.ts");
|
|
12
13
|
if (await ts_config.exists())
|
|
13
14
|
return ts_config;
|
|
14
|
-
const js_config =
|
|
15
|
+
const js_config = root.join("config/app.js");
|
|
15
16
|
if (await js_config.exists())
|
|
16
17
|
return js_config;
|
|
17
18
|
};
|
|
18
|
-
const get_config = async (
|
|
19
|
-
const config = await find_config(
|
|
19
|
+
const get_config = async (root) => {
|
|
20
|
+
const config = await find_config(root);
|
|
20
21
|
if (config !== undefined) {
|
|
21
22
|
try {
|
|
22
|
-
const imported = await config.import("default");
|
|
23
|
+
const imported = (await config.import("default"))[s_config];
|
|
23
24
|
if (no_config(imported))
|
|
24
25
|
throw fail("empty config file at {0}", config);
|
|
25
26
|
return imported;
|
|
@@ -32,10 +33,10 @@ const get_config = async (project_root) => {
|
|
|
32
33
|
};
|
|
33
34
|
export default async (input) => {
|
|
34
35
|
try {
|
|
35
|
-
const
|
|
36
|
+
const root = await fs.project.root();
|
|
36
37
|
const flags = Flags.parse(input);
|
|
37
|
-
const config = await get_config(
|
|
38
|
-
const app = await new BuildApp(
|
|
38
|
+
const config = await get_config(root);
|
|
39
|
+
const app = await new BuildApp(root, config, flags).init();
|
|
39
40
|
await app.buildInit();
|
|
40
41
|
return true;
|
|
41
42
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { TransformOptions } from "esbuild";
|
|
2
|
+
declare const _default: {
|
|
3
|
+
readonly angular: TransformOptions;
|
|
4
|
+
readonly react: TransformOptions;
|
|
5
|
+
readonly solid: TransformOptions;
|
|
6
|
+
readonly typescript: TransformOptions;
|
|
7
|
+
readonly voby: TransformOptions;
|
|
8
|
+
};
|
|
9
|
+
export default _default;
|
|
10
|
+
//# sourceMappingURL=presets.d.ts.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
const angular = {
|
|
2
|
+
loader: "ts",
|
|
3
|
+
tsconfigRaw: {
|
|
4
|
+
compilerOptions: {
|
|
5
|
+
experimentalDecorators: true,
|
|
6
|
+
},
|
|
7
|
+
},
|
|
8
|
+
};
|
|
9
|
+
const react = {
|
|
10
|
+
jsx: "automatic",
|
|
11
|
+
loader: "tsx",
|
|
12
|
+
};
|
|
13
|
+
const solid = {
|
|
14
|
+
format: "esm",
|
|
15
|
+
jsx: "preserve",
|
|
16
|
+
loader: "tsx",
|
|
17
|
+
target: "esnext",
|
|
18
|
+
};
|
|
19
|
+
const typescript = {
|
|
20
|
+
loader: "ts",
|
|
21
|
+
};
|
|
22
|
+
const voby = {
|
|
23
|
+
jsx: "automatic",
|
|
24
|
+
loader: "tsx",
|
|
25
|
+
tsconfigRaw: {
|
|
26
|
+
compilerOptions: {
|
|
27
|
+
jsx: "react-jsx",
|
|
28
|
+
jsxImportSource: "voby",
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
export default {
|
|
33
|
+
angular,
|
|
34
|
+
react,
|
|
35
|
+
solid,
|
|
36
|
+
typescript,
|
|
37
|
+
voby,
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=presets.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import plugin_assets from "#build/server/plugin/assets";
|
|
2
2
|
import plugin_config from "#build/server/plugin/config";
|
|
3
|
-
import
|
|
3
|
+
import plugin_db_default from "#build/server/plugin/db-default";
|
|
4
4
|
import plugin_frontend from "#build/server/plugin/frontend";
|
|
5
|
-
import
|
|
5
|
+
import plugin_live_reload from "#build/server/plugin/live-reload";
|
|
6
6
|
import plugin_native_addons from "#build/server/plugin/native-addons";
|
|
7
7
|
import plugin_node_imports from "#build/server/plugin/node-imports";
|
|
8
8
|
import plugin_requires from "#build/server/plugin/requires";
|
|
@@ -29,16 +29,14 @@ const conditions = {
|
|
|
29
29
|
deno: ["deno", "node"],
|
|
30
30
|
};
|
|
31
31
|
export default async function build_server(app) {
|
|
32
|
-
const extensions = app.frontendExtensions;
|
|
33
32
|
app.plugin("server", plugin_node_imports(app));
|
|
34
|
-
|
|
35
|
-
app.plugin("server", plugin_frontend(app));
|
|
33
|
+
app.plugin("server", plugin_frontend(app));
|
|
36
34
|
app.plugin("server", plugin_view(app));
|
|
37
35
|
app.plugin("server", plugin_store(app));
|
|
38
36
|
app.plugin("server", plugin_store_wrap(app));
|
|
39
|
-
app.plugin("server",
|
|
37
|
+
app.plugin("server", plugin_db_default(app));
|
|
40
38
|
if (app.mode === "development")
|
|
41
|
-
app.plugin("server",
|
|
39
|
+
app.plugin("server", plugin_live_reload(app));
|
|
42
40
|
app.plugin("server", plugin_virtual_pages(app));
|
|
43
41
|
app.plugin("server", plugin_virtual_routes(app));
|
|
44
42
|
app.plugin("server", plugin_route(app));
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import location from "#location";
|
|
2
|
-
import
|
|
2
|
+
import MIME from "@rcompat/http/mime";
|
|
3
3
|
function bytes2base64(bytes) {
|
|
4
4
|
const chunk_size = 0x8000;
|
|
5
5
|
let result = "";
|
|
@@ -18,28 +18,30 @@ export default function plugin_server_assets(app) {
|
|
|
18
18
|
});
|
|
19
19
|
build.onLoad({ filter: /.*/, namespace: "primate-assets" }, async () => {
|
|
20
20
|
if (app.mode === "production") {
|
|
21
|
-
const client_files = await app.runpath(location.client).
|
|
21
|
+
const client_files = await app.runpath(location.client).files({
|
|
22
|
+
recursive: true,
|
|
23
|
+
});
|
|
22
24
|
const client_assets = {};
|
|
23
25
|
for (const file of client_files) {
|
|
24
26
|
const pathname = `/${file.name}`;
|
|
25
27
|
const bytes = await file.bytes();
|
|
26
28
|
const base64 = bytes2base64(bytes);
|
|
27
29
|
client_assets[pathname] = {
|
|
28
|
-
mime: resolve(file.name),
|
|
30
|
+
mime: MIME.resolve(file.name),
|
|
29
31
|
data: base64,
|
|
30
32
|
};
|
|
31
33
|
}
|
|
32
34
|
const static_dir = app.root.join(location.static);
|
|
33
|
-
const static_files = await static_dir.
|
|
34
|
-
|
|
35
|
-
|
|
35
|
+
const static_files = await static_dir.files({
|
|
36
|
+
recursive: true,
|
|
37
|
+
});
|
|
36
38
|
const static_assets = {};
|
|
37
39
|
for (const file of static_files) {
|
|
38
40
|
const pathname = file.debase(static_dir).path;
|
|
39
41
|
const bytes = await file.bytes();
|
|
40
42
|
const base64 = bytes2base64(bytes);
|
|
41
43
|
static_assets[pathname] = {
|
|
42
|
-
mime: resolve(file.name),
|
|
44
|
+
mime: MIME.resolve(file.name),
|
|
43
45
|
data: base64,
|
|
44
46
|
};
|
|
45
47
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import fail from "#fail";
|
|
2
1
|
export default function plugin_server_config(app) {
|
|
3
2
|
return {
|
|
4
3
|
name: "primate/server/config",
|
|
5
4
|
setup(build) {
|
|
6
|
-
build.onResolve({ filter: /^app
|
|
5
|
+
build.onResolve({ filter: /^(\$:app)$/ }, async () => {
|
|
7
6
|
const ts = app.path.config.join("app.ts");
|
|
8
7
|
if (await ts.exists())
|
|
9
8
|
return { path: ts.path };
|
|
@@ -34,8 +33,16 @@ export default function plugin_server_config(app) {
|
|
|
34
33
|
const js = app.path.config.join(`${name}.js`);
|
|
35
34
|
if (await js.exists())
|
|
36
35
|
return { path: js.path };
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
return {
|
|
37
|
+
path: `app-config-${name}-default`,
|
|
38
|
+
namespace: "primate-config-default",
|
|
39
|
+
};
|
|
40
|
+
});
|
|
41
|
+
build.onLoad({ filter: /^app-config-.+-default$/, namespace: "primate-config-default" }, () => {
|
|
42
|
+
return {
|
|
43
|
+
contents: "export default null;",
|
|
44
|
+
loader: "js",
|
|
45
|
+
};
|
|
39
46
|
});
|
|
40
47
|
},
|
|
41
48
|
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import fail from "#fail";
|
|
2
|
+
export default function plugin_server_db_default(app) {
|
|
3
|
+
const resolveDir = app.root.path;
|
|
4
|
+
const base = app.path.config.join("db");
|
|
5
|
+
const default_db = {
|
|
6
|
+
contents: "import db from \"primate/db\"; export default db();",
|
|
7
|
+
loader: "js",
|
|
8
|
+
resolveDir,
|
|
9
|
+
};
|
|
10
|
+
return {
|
|
11
|
+
name: "primate/server/db-default",
|
|
12
|
+
setup(build) {
|
|
13
|
+
build.onResolve({ filter: /^app:db/ }, () => {
|
|
14
|
+
return { path: "db-default", namespace: "primate-db" };
|
|
15
|
+
});
|
|
16
|
+
build.onLoad({ filter: /.*/, namespace: "primate-db" }, async () => {
|
|
17
|
+
if (!await base.exists())
|
|
18
|
+
return default_db;
|
|
19
|
+
const dbs = await base.files({
|
|
20
|
+
recursive: true,
|
|
21
|
+
filter: f => f.name.endsWith(".ts") || f.name.endsWith(".js"),
|
|
22
|
+
});
|
|
23
|
+
if (dbs.length === 0)
|
|
24
|
+
return default_db;
|
|
25
|
+
const by_name = {};
|
|
26
|
+
for (const d of dbs)
|
|
27
|
+
by_name[d.name] = d;
|
|
28
|
+
const pick = (stem) => by_name[`${stem}.ts`] ?? by_name[`${stem}.js`];
|
|
29
|
+
let db = pick("index") ?? pick("default");
|
|
30
|
+
if (db === undefined) {
|
|
31
|
+
if (dbs.length === 1)
|
|
32
|
+
db = dbs[0];
|
|
33
|
+
else
|
|
34
|
+
throw fail("multiple database drivers, add index or default.(t|j)s; found {0}", dbs.map(f => f.name).join(", "));
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
contents: `export { default } from ${JSON.stringify(db.path)};`,
|
|
38
|
+
loader: "js",
|
|
39
|
+
resolveDir,
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=db-default.js.map
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import
|
|
1
|
+
import fs from "@rcompat/fs";
|
|
2
2
|
export default function plugin_server_frontend(app) {
|
|
3
3
|
const filter = new RegExp(`(${app.frontendExtensions.map(e => e.replace(".", "\\.")).join("|")})$`);
|
|
4
4
|
return {
|
|
5
5
|
name: "primate/server/frontend",
|
|
6
6
|
setup(build) {
|
|
7
|
+
if (app.frontendExtensions.length === 0)
|
|
8
|
+
return;
|
|
7
9
|
build.onLoad({ filter, namespace: "file" }, async (args) => {
|
|
8
|
-
const file =
|
|
10
|
+
const file = fs.ref(args.path);
|
|
9
11
|
const binder = app.binder(file);
|
|
10
12
|
if (!binder)
|
|
11
13
|
return null;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import fail from "#fail";
|
|
2
|
-
export default function
|
|
2
|
+
export default function plugin_server_live_reload(app) {
|
|
3
3
|
let build_n = 0;
|
|
4
4
|
let serve_app;
|
|
5
5
|
return {
|
|
6
|
-
name: "primate/server/
|
|
6
|
+
name: "primate/server/live-reload",
|
|
7
7
|
setup(build) {
|
|
8
8
|
build.onEnd(async (result) => {
|
|
9
9
|
// don't do anything on errors
|
|
@@ -26,11 +26,11 @@ export default function plugin_server_hot_reload(app) {
|
|
|
26
26
|
build_n++;
|
|
27
27
|
}
|
|
28
28
|
catch (err) {
|
|
29
|
-
fail("[primate/server/
|
|
29
|
+
fail("[primate/server/live-reload] failed to import {0}", filename);
|
|
30
30
|
console.error(err);
|
|
31
31
|
}
|
|
32
32
|
});
|
|
33
33
|
},
|
|
34
34
|
};
|
|
35
35
|
}
|
|
36
|
-
//# sourceMappingURL=
|
|
36
|
+
//# sourceMappingURL=live-reload.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import fail from "#fail";
|
|
2
2
|
import log from "#log";
|
|
3
|
-
import
|
|
3
|
+
import fs from "@rcompat/fs";
|
|
4
4
|
import { createRequire } from "node:module";
|
|
5
5
|
const requirer = createRequire(import.meta.url);
|
|
6
6
|
export default function plugin_server_store(app) {
|
|
@@ -17,13 +17,15 @@ export default function plugin_server_store(app) {
|
|
|
17
17
|
const module_path = requirer.resolve(args.path, {
|
|
18
18
|
paths: [args.resolveDir],
|
|
19
19
|
});
|
|
20
|
-
const module_dir =
|
|
20
|
+
const module_dir = fs.ref(module_path).directory;
|
|
21
21
|
// built-ins have no .node and would otherwise cause global search
|
|
22
22
|
if (module_dir.path === ".")
|
|
23
23
|
return null;
|
|
24
24
|
// check if this module has .node files
|
|
25
|
-
const node_files = await module_dir
|
|
26
|
-
|
|
25
|
+
const node_files = await module_dir.files({
|
|
26
|
+
recursive: true,
|
|
27
|
+
filter: info => info.path.endsWith(".node"),
|
|
28
|
+
});
|
|
27
29
|
if (node_files.length > 0) {
|
|
28
30
|
const platform = process.platform;
|
|
29
31
|
const arch = process.arch;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
1
|
+
import fs from "@rcompat/fs";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
|
-
const core_pkg = await
|
|
3
|
+
const core_pkg = await fs.project.package(import.meta.dirname);
|
|
4
4
|
const core_root = core_pkg.directory.path;
|
|
5
5
|
const requirer = createRequire(import.meta.url);
|
|
6
6
|
export default function plugin_server_node_imports(_app) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import fail from "#fail";
|
|
2
2
|
import wrap from "#route/wrap";
|
|
3
|
-
import
|
|
3
|
+
import fs from "@rcompat/fs";
|
|
4
4
|
const contents = "export default {};";
|
|
5
5
|
export default function plugin_server_route(app) {
|
|
6
6
|
const path_routes = app.path.routes;
|
|
@@ -18,7 +18,7 @@ export default function plugin_server_route(app) {
|
|
|
18
18
|
let file;
|
|
19
19
|
let extension;
|
|
20
20
|
for (const e of extensions) {
|
|
21
|
-
const candidate =
|
|
21
|
+
const candidate = fs.ref(base.path + e);
|
|
22
22
|
if (await candidate.exists()) {
|
|
23
23
|
file = candidate;
|
|
24
24
|
extension = e;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import fs from "@rcompat/fs";
|
|
2
2
|
export default function plugin_server_store_wrap(app) {
|
|
3
3
|
return {
|
|
4
4
|
name: "primate/server/store-wrap",
|
|
@@ -10,7 +10,7 @@ export default function plugin_server_store_wrap(app) {
|
|
|
10
10
|
// only TS/JS
|
|
11
11
|
if (!/\.([tj]s)$/.test(args.path))
|
|
12
12
|
return null;
|
|
13
|
-
const file =
|
|
13
|
+
const file = fs.ref(args.path);
|
|
14
14
|
const storesRoot = app.path.stores.path;
|
|
15
15
|
// only files under app/stores
|
|
16
16
|
if (!file.path.startsWith(storesRoot + "/"))
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import fs from "@rcompat/fs";
|
|
2
2
|
export default function plugin_server_store(app) {
|
|
3
3
|
return {
|
|
4
4
|
name: "primate/server/store",
|
|
@@ -11,10 +11,10 @@ export default function plugin_server_store(app) {
|
|
|
11
11
|
const name = args.path;
|
|
12
12
|
return {
|
|
13
13
|
contents: `
|
|
14
|
-
import
|
|
15
|
-
import wrap from "primate/
|
|
14
|
+
import db from "app:db";
|
|
15
|
+
import wrap from "primate/orm/wrap";
|
|
16
16
|
import schema from "store:${name}";
|
|
17
|
-
export default wrap("${name}", schema,
|
|
17
|
+
export default wrap("${name}", schema, db);
|
|
18
18
|
`,
|
|
19
19
|
loader: "js",
|
|
20
20
|
resolveDir: app.path.stores.path,
|
|
@@ -23,7 +23,7 @@ export default function plugin_server_store(app) {
|
|
|
23
23
|
build.onResolve({ filter: /^store:/ }, async (args) => {
|
|
24
24
|
const name = args.path.slice("store:".length);
|
|
25
25
|
for (const ext of app.extensions) {
|
|
26
|
-
const file =
|
|
26
|
+
const file = fs.ref(`${app.path.stores.path}/${name}${ext}`);
|
|
27
27
|
if (await file.exists()) {
|
|
28
28
|
// special namespace to bypass auto-wrap
|
|
29
29
|
return { path: file.path, namespace: "primate-store-raw" };
|
|
@@ -32,7 +32,7 @@ export default function plugin_server_store(app) {
|
|
|
32
32
|
return null;
|
|
33
33
|
});
|
|
34
34
|
build.onLoad({ filter: /.*/, namespace: "primate-store-raw" }, async (args) => {
|
|
35
|
-
const file =
|
|
35
|
+
const file = fs.ref(args.path);
|
|
36
36
|
const source = await file.text();
|
|
37
37
|
return {
|
|
38
38
|
contents: source,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
const jts_re = /\.[jt]s$/;
|
|
1
|
+
import fs from "@rcompat/fs";
|
|
3
2
|
export default function plugin_server_stores(app) {
|
|
4
3
|
const base = app.path.stores;
|
|
5
4
|
return {
|
|
@@ -9,12 +8,12 @@ export default function plugin_server_stores(app) {
|
|
|
9
8
|
return { path: "stores-virtual", namespace: "primate-stores" };
|
|
10
9
|
});
|
|
11
10
|
build.onLoad({ filter: /.*/, namespace: "primate-stores" }, async () => {
|
|
12
|
-
const stores = await Promise.all((await base.
|
|
11
|
+
const stores = await Promise.all((await base.files({ recursive: true, filter: /\.[jt]s$/ }))
|
|
13
12
|
.map(async (path) => `${path}`.replace(base.toString(), _ => "")));
|
|
14
13
|
const contents = `
|
|
15
14
|
const stores = {};
|
|
16
|
-
${stores.map(path => path.slice(1, -".js".length)).map((bare, i) => `import * as store${i} from "${
|
|
17
|
-
stores["${
|
|
15
|
+
${stores.map(path => path.slice(1, -".js".length)).map((bare, i) => `import * as store${i} from "${fs.webpath(`app:store/${bare}`)}";
|
|
16
|
+
stores["${fs.webpath(bare)}"] = store${i}.default;`).join("\n")}
|
|
18
17
|
export default stores;
|
|
19
18
|
`;
|
|
20
19
|
return { contents, loader: "js", resolveDir: app.root.path };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import fs from "@rcompat/fs";
|
|
2
2
|
export default function plugin_server_view(app) {
|
|
3
3
|
return {
|
|
4
4
|
name: "primate/server/view",
|
|
@@ -19,7 +19,7 @@ export default function plugin_server_view(app) {
|
|
|
19
19
|
// couldn't resolve, don't interfere
|
|
20
20
|
if (result.errors.length > 0 || !result.path)
|
|
21
21
|
return null;
|
|
22
|
-
const resolved =
|
|
22
|
+
const resolved = fs.ref(result.path);
|
|
23
23
|
// must live under app.path.views (e.g. app/views/...)
|
|
24
24
|
const views_root = app.path.views.path;
|
|
25
25
|
if (!resolved.path.startsWith(views_root + "/"))
|
|
@@ -40,7 +40,7 @@ export default function plugin_server_view(app) {
|
|
|
40
40
|
build.onResolve({ filter: /^view:/ }, async (args) => {
|
|
41
41
|
const name = args.path.slice("view:".length);
|
|
42
42
|
for (const ext of app.extensions) {
|
|
43
|
-
const file =
|
|
43
|
+
const file = app.path.views.join(`${name}${ext}`);
|
|
44
44
|
if (await file.exists()) {
|
|
45
45
|
return { path: file.path, namespace: "primate-view-original" };
|
|
46
46
|
}
|
|
@@ -48,7 +48,7 @@ export default function plugin_server_view(app) {
|
|
|
48
48
|
return null;
|
|
49
49
|
});
|
|
50
50
|
build.onLoad({ filter: /.*/, namespace: "primate-view-original" }, async (args) => {
|
|
51
|
-
const file =
|
|
51
|
+
const file = fs.ref(args.path);
|
|
52
52
|
const binder = app.binder(file);
|
|
53
53
|
if (!binder)
|
|
54
54
|
return null;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import fs from "@rcompat/fs";
|
|
2
2
|
export default function plugin_server_views(app) {
|
|
3
3
|
return {
|
|
4
4
|
name: "primate/server/views",
|
|
@@ -7,15 +7,15 @@ export default function plugin_server_views(app) {
|
|
|
7
7
|
return { path: "views-virtual", namespace: "primate-views" };
|
|
8
8
|
});
|
|
9
9
|
build.onLoad({ filter: /.*/, namespace: "primate-views" }, async () => {
|
|
10
|
-
const files = await app.path.views.
|
|
10
|
+
const files = await app.path.views.files({ recursive: true });
|
|
11
11
|
const roots = Object.keys(app.roots);
|
|
12
12
|
const contents = `
|
|
13
13
|
const view = [];
|
|
14
14
|
${files.map((file, i) => {
|
|
15
15
|
const path = app.basename(file, app.path.views);
|
|
16
16
|
return `
|
|
17
|
-
import * as view${i} from "${
|
|
18
|
-
view.push(["${
|
|
17
|
+
import * as view${i} from "${fs.webpath(`view:${path}`)}";
|
|
18
|
+
view.push(["${fs.webpath(path)}", view${i}]);`;
|
|
19
19
|
}).join("\n")}
|
|
20
20
|
|
|
21
21
|
${roots.map((filename, i) => `
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
const core_pkg = await
|
|
3
|
-
const core_root = core_pkg.directory;
|
|
1
|
+
import fs from "@rcompat/fs";
|
|
2
|
+
const core_pkg = await fs.project.root(import.meta.dirname);
|
|
4
3
|
export default function plugin_server_virtual_pages(app) {
|
|
5
4
|
return {
|
|
6
5
|
name: "primate/server/virtual/pages",
|
|
@@ -9,15 +8,16 @@ export default function plugin_server_virtual_pages(app) {
|
|
|
9
8
|
return { path: "pages-virtual", namespace: "primate-pages" };
|
|
10
9
|
});
|
|
11
10
|
build.onLoad({ filter: /.*/, namespace: "primate-pages" }, async () => {
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const defaults = core_root.join("lib", "private", "defaults");
|
|
11
|
+
const filter = /^.*\.html$/ui;
|
|
12
|
+
const defaults = core_pkg.join("lib", "private", "defaults");
|
|
15
13
|
const pages = {};
|
|
16
|
-
for (const file of await defaults.
|
|
14
|
+
for (const file of await defaults.files({ filter })) {
|
|
17
15
|
pages[file.name] = file;
|
|
16
|
+
}
|
|
18
17
|
if (await app.path.pages.exists()) {
|
|
19
|
-
for (const file of await app.path.pages.
|
|
18
|
+
for (const file of await app.path.pages.files({ filter })) {
|
|
20
19
|
pages[file.name] = file;
|
|
20
|
+
}
|
|
21
21
|
}
|
|
22
22
|
const entries = await Promise.all(Object.entries(pages).map(async ([name, file]) => {
|
|
23
23
|
const text = await file.text();
|