@kaspernj/api-maker 1.0.446 → 1.0.447
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/{.eslintrc.cjs → .eslintrc.js} +4 -0
- package/README.md +35 -0
- package/android/build.gradle +43 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/java/expo/modules/api_maker/ApiMakerModule.kt +50 -0
- package/android/src/main/java/expo/modules/api_maker/ApiMakerView.kt +30 -0
- package/build/api.js +120 -0
- package/build/attribute-not-loaded-error.js +2 -0
- package/build/base-component.js +5 -0
- package/build/base-error.js +33 -0
- package/build/base-model/attribute.js +25 -0
- package/build/base-model/column.js +11 -0
- package/build/base-model/reflection.js +14 -0
- package/build/base-model/scope.js +11 -0
- package/build/base-model.js +828 -0
- package/build/bootstrap/attribute-row/index.js +105 -0
- package/build/bootstrap/attribute-rows.js +31 -0
- package/build/bootstrap/card.js +138 -0
- package/build/bootstrap/checkbox.js +97 -0
- package/build/bootstrap/checkboxes.js +183 -0
- package/build/bootstrap/index.js +2 -0
- package/build/bootstrap/input.js +128 -0
- package/build/bootstrap/invalid-feedback.js +27 -0
- package/build/bootstrap/paginate.js +150 -0
- package/build/bootstrap/radio-buttons.js +72 -0
- package/build/bootstrap/select.js +88 -0
- package/build/bootstrap/sort-link.js +130 -0
- package/build/cable-connection-pool.js +128 -0
- package/build/cable-subscription-pool.js +207 -0
- package/build/cable-subscription.js +21 -0
- package/build/cache-key-generator.js +81 -0
- package/build/can-can.js +134 -0
- package/build/channels-consumer.js +3 -0
- package/build/collection-loader.js +48 -0
- package/build/collection.js +279 -0
- package/build/command-submit-data.js +81 -0
- package/build/commands-pool.js +195 -0
- package/build/compose.js +9 -0
- package/build/config.js +53 -0
- package/build/custom-error.js +5 -0
- package/build/data-set-to-attributes.js +10 -0
- package/build/deserializer.js +56 -0
- package/build/destroy-error.js +5 -0
- package/build/devise.js +109 -0
- package/build/draggable-sort/controller.js +136 -0
- package/build/draggable-sort/index.js +114 -0
- package/build/draggable-sort/item.js +188 -0
- package/build/error-logger.js +101 -0
- package/build/error-messages.js +13 -0
- package/build/event-connection.js +32 -0
- package/build/event-model-class.js +24 -0
- package/build/events.js +5 -0
- package/build/form.js +83 -0
- package/build/index.js +3 -0
- package/build/inputs/attachment.js +121 -0
- package/build/inputs/auto-submit.js +36 -0
- package/build/inputs/checkbox.js +145 -0
- package/build/inputs/checkboxes.js +111 -0
- package/build/inputs/id-for-component.js +15 -0
- package/build/inputs/input-wrapper.js +18 -0
- package/build/inputs/input.js +230 -0
- package/build/inputs/money.js +179 -0
- package/build/inputs/name-for-component.js +13 -0
- package/build/inputs/select.js +92 -0
- package/build/instance-of-class-name.js +23 -0
- package/build/key-value-store.js +53 -0
- package/build/link.js +68 -0
- package/build/logger.js +30 -0
- package/build/modal.js +37 -0
- package/build/model-class-require.js +13 -0
- package/build/model-events.js +30 -0
- package/build/model-name.js +28 -0
- package/build/model-prop-type.js +101 -0
- package/build/model-recipes-loader.js +32 -0
- package/build/model-recipes-model-loader.js +357 -0
- package/build/models-response-reader.js +40 -0
- package/build/models.js +8 -0
- package/build/money-formatter.js +77 -0
- package/build/not-loaded-error.js +2 -0
- package/build/params.js +60 -0
- package/build/preloaded.js +38 -0
- package/build/resize-observer.js +11 -0
- package/build/result.js +13 -0
- package/build/router/route.js +262 -0
- package/build/router/switch.js +72 -0
- package/build/router.js +57 -0
- package/build/routes-native.js +202 -0
- package/build/routes.js +50 -0
- package/build/run-last.js +35 -0
- package/build/serializer.js +63 -0
- package/build/services.js +20 -0
- package/build/session-status-updater.js +126 -0
- package/build/source-maps-loader.js +171 -0
- package/build/super-admin/config-reader.js +84 -0
- package/build/super-admin/edit-page/edit-attribute-checkbox.js +85 -0
- package/build/super-admin/edit-page/edit-attribute-content.js +54 -0
- package/build/super-admin/edit-page/edit-attribute-input.js +79 -0
- package/build/super-admin/edit-page/edit-attribute.js +76 -0
- package/build/super-admin/edit-page.js +120 -0
- package/build/super-admin/has-edit-config.js +12 -0
- package/build/super-admin/index-page.js +24 -0
- package/build/super-admin/index.js +180 -0
- package/build/super-admin/layout/header/index.js +151 -0
- package/build/super-admin/layout/index.js +109 -0
- package/build/super-admin/layout/menu/index.js +93 -0
- package/build/super-admin/layout/menu/menu-content.js +40 -0
- package/build/super-admin/layout/menu/menu-item.js +83 -0
- package/build/super-admin/layout/no-access.js +25 -0
- package/build/super-admin/model-class-table.js +61 -0
- package/build/super-admin/models.js +8 -0
- package/build/super-admin/show-nav.js +49 -0
- package/build/super-admin/show-page/belongs-to-attribute-row.js +28 -0
- package/build/super-admin/show-page/index.js +141 -0
- package/build/super-admin/show-reflection-actions.js +47 -0
- package/build/super-admin/show-reflection-link.js +46 -0
- package/build/super-admin/show-reflection-page.js +47 -0
- package/build/table/column-content.js +112 -0
- package/build/table/column-identifier.js +18 -0
- package/build/table/column-visible.js +7 -0
- package/build/table/components/column.js +20 -0
- package/build/table/components/flat-list.js +20 -0
- package/build/table/components/header.js +25 -0
- package/build/table/components/row.js +25 -0
- package/build/table/filters/attribute-element.js +43 -0
- package/build/table/filters/filter-form.js +392 -0
- package/build/table/filters/filter.js +89 -0
- package/build/table/filters/index.js +182 -0
- package/build/table/filters/load-search-modal.js +174 -0
- package/build/table/filters/reflection-element.js +36 -0
- package/build/table/filters/save-search-modal.js +86 -0
- package/build/table/filters/scope-element.js +41 -0
- package/build/table/header-column-content.js +67 -0
- package/build/table/header-column.js +144 -0
- package/build/table/header-select.js +104 -0
- package/build/table/model-callback-args.js +10 -0
- package/build/table/model-column.js +87 -0
- package/build/table/model-row.js +179 -0
- package/build/table/select-calculator.js +63 -0
- package/build/table/settings/column-row.js +97 -0
- package/build/table/settings/download-action.js +78 -0
- package/build/table/settings/index.js +92 -0
- package/build/table/table-settings.js +219 -0
- package/build/table/table.js +972 -0
- package/build/table/use-sorting.js +34 -0
- package/build/table/widths.js +75 -0
- package/build/table/worker-plugins-check-all-checkbox.js +125 -0
- package/build/table/worker-plugins-checkbox.js +115 -0
- package/build/translated-attributes.js +10 -0
- package/build/translated-collections.js +11 -0
- package/build/updated-attribute.js +76 -0
- package/build/url-encode.js +15 -0
- package/build/use-breakpoint.js +44 -0
- package/build/use-can-can.js +55 -0
- package/build/use-collection.js +225 -0
- package/build/use-created-event.js +52 -0
- package/build/use-current-user.js +73 -0
- package/build/use-destroyed-event.js +60 -0
- package/build/use-event-emitter.js +13 -0
- package/build/use-event-listener.js +16 -0
- package/build/use-input.js +140 -0
- package/build/use-model-event.js +60 -0
- package/build/use-model.js +169 -0
- package/build/use-resize-observer.js +23 -0
- package/build/use-router.js +102 -0
- package/build/use-screen-layout.js +39 -0
- package/build/use-updated-event.js +60 -0
- package/build/use-validation-errors.js +30 -0
- package/build/utils/card.js +51 -0
- package/build/utils/checkbox.js +48 -0
- package/build/utils/default-style.js +18 -0
- package/build/utils/modal.js +61 -0
- package/build/utils/text.js +18 -0
- package/build/validation-error.js +28 -0
- package/build/validation-errors.js +98 -0
- package/build/with-collection.js +13 -0
- package/build/with-current-user.js +9 -0
- package/build/with-model.js +14 -0
- package/build/with-router.js +21 -0
- package/expo-module.config.json +17 -0
- package/ios/ApiMaker.podspec +29 -0
- package/ios/ApiMakerModule.swift +48 -0
- package/ios/ApiMakerView.swift +38 -0
- package/package.json +35 -15
- package/src/{api.mjs → api.js} +5 -5
- package/src/{base-error.mjs → base-error.js} +1 -1
- package/src/base-model/{attribute.mjs → attribute.js} +1 -1
- package/src/base-model/{reflection.mjs → reflection.js} +1 -1
- package/src/{base-model.mjs → base-model.js} +14 -14
- package/src/bootstrap/attribute-row/index.jsx +2 -2
- package/src/bootstrap/attribute-rows.jsx +1 -1
- package/src/bootstrap/card.jsx +1 -1
- package/src/bootstrap/checkbox.jsx +1 -1
- package/src/bootstrap/checkboxes.jsx +1 -1
- package/src/bootstrap/input.jsx +1 -1
- package/src/bootstrap/paginate.jsx +2 -2
- package/src/bootstrap/sort-link.jsx +3 -3
- package/src/{cable-connection-pool.mjs → cable-connection-pool.js} +3 -3
- package/src/{cable-subscription-pool.mjs → cable-subscription-pool.js} +4 -4
- package/src/{cable-subscription.mjs → cable-subscription.js} +1 -1
- package/src/{can-can.mjs → can-can.js} +1 -1
- package/src/collection-loader.jsx +2 -2
- package/src/{collection.mjs → collection.js} +3 -3
- package/src/{commands-pool.mjs → commands-pool.js} +11 -11
- package/src/{custom-error.mjs → custom-error.js} +1 -1
- package/src/{deserializer.mjs → deserializer.js} +2 -2
- package/src/{destroy-error.mjs → destroy-error.js} +1 -1
- package/src/{devise.mjs → devise.js} +5 -9
- package/src/draggable-sort/index.jsx +3 -3
- package/src/draggable-sort/item.jsx +2 -2
- package/src/{error-logger.mjs → error-logger.js} +1 -1
- package/src/event-connection.jsx +1 -1
- package/src/event-model-class.jsx +1 -1
- package/src/form.jsx +1 -1
- package/src/index.js +3 -0
- package/src/inputs/attachment.jsx +2 -2
- package/src/inputs/checkbox.jsx +7 -6
- package/src/inputs/checkboxes.jsx +1 -1
- package/src/inputs/input-wrapper.jsx +1 -1
- package/src/inputs/input.jsx +8 -7
- package/src/inputs/money.jsx +3 -3
- package/src/inputs/select.jsx +1 -1
- package/src/{key-value-store.mjs → key-value-store.js} +1 -1
- package/src/link.jsx +2 -2
- package/src/modal.jsx +1 -1
- package/src/{model-class-require.mjs → model-class-require.js} +4 -2
- package/src/{model-events.mjs → model-events.js} +1 -1
- package/src/{model-name.mjs → model-name.js} +1 -1
- package/src/{model-recipes-loader.mjs → model-recipes-loader.js} +1 -1
- package/src/{model-recipes-model-loader.mjs → model-recipes-model-loader.js} +2 -2
- package/src/{models-response-reader.mjs → models-response-reader.js} +2 -2
- package/src/models.js +7 -0
- package/src/{models.mjs.erb → models.js.erb} +1 -1
- package/src/{params.mjs → params.js} +2 -2
- package/src/{preloaded.mjs → preloaded.js} +1 -1
- package/src/resize-observer.jsx +1 -1
- package/src/router/route.jsx +1 -1
- package/src/router/switch.jsx +1 -1
- package/src/router.jsx +1 -1
- package/src/{routes-native.mjs → routes-native.js} +1 -1
- package/src/{services.mjs → services.js} +1 -1
- package/src/{session-status-updater.mjs → session-status-updater.js} +3 -3
- package/src/{source-maps-loader.mjs → source-maps-loader.js} +1 -1
- package/src/super-admin/edit-page/edit-attribute-checkbox.jsx +1 -1
- package/src/super-admin/edit-page/edit-attribute-content.jsx +1 -1
- package/src/super-admin/edit-page/edit-attribute-input.jsx +1 -1
- package/src/super-admin/edit-page/edit-attribute.jsx +1 -1
- package/src/super-admin/edit-page.jsx +2 -2
- package/src/super-admin/has-edit-config.js +1 -1
- package/src/super-admin/index-page.jsx +1 -1
- package/src/super-admin/index.jsx +7 -7
- package/src/super-admin/layout/header/index.jsx +2 -2
- package/src/super-admin/layout/index.jsx +3 -3
- package/src/super-admin/layout/menu/index.jsx +3 -3
- package/src/super-admin/layout/menu/menu-content.jsx +2 -2
- package/src/super-admin/layout/menu/{menu-item/index.jsx → menu-item.jsx} +5 -6
- package/src/super-admin/layout/no-access.jsx +2 -2
- package/src/super-admin/model-class-table.jsx +3 -3
- package/src/super-admin/models.js +1 -1
- package/src/super-admin/show-nav.jsx +2 -2
- package/src/super-admin/show-page/belongs-to-attribute-row.jsx +1 -1
- package/src/super-admin/show-page/index.jsx +2 -2
- package/src/super-admin/show-reflection-actions.jsx +1 -1
- package/src/super-admin/show-reflection-link.jsx +1 -1
- package/src/super-admin/show-reflection-page.jsx +1 -1
- package/src/table/column-content.jsx +1 -1
- package/src/table/filters/filter-form.jsx +1 -1
- package/src/table/filters/index.jsx +5 -3
- package/src/table/filters/load-search-modal.jsx +6 -4
- package/src/table/filters/save-search-modal.jsx +4 -4
- package/src/table/header-select.jsx +1 -1
- package/src/table/model-column.jsx +1 -1
- package/src/table/model-row.jsx +2 -2
- package/src/table/{select-calculator.mjs → select-calculator.js} +1 -1
- package/src/table/settings/column-row.jsx +2 -2
- package/src/table/settings/download-action.jsx +3 -3
- package/src/table/settings/index.jsx +3 -3
- package/src/table/table-settings.js +5 -4
- package/src/table/table.jsx +8 -8
- package/src/table/{use-sorting.mjs → use-sorting.js} +1 -1
- package/src/table/worker-plugins-check-all-checkbox.jsx +2 -2
- package/src/table/worker-plugins-checkbox.jsx +2 -2
- package/src/{translated-collections.mjs → translated-collections.js} +1 -1
- package/src/updated-attribute.jsx +1 -1
- package/src/{use-breakpoint.mjs → use-breakpoint.js} +2 -2
- package/src/use-can-can.js +55 -0
- package/src/{use-collection.mjs → use-collection.js} +4 -4
- package/src/{use-created-event.mjs → use-created-event.js} +2 -2
- package/src/{use-current-user.mjs → use-current-user.js} +6 -5
- package/src/{use-destroyed-event.mjs → use-destroyed-event.js} +2 -2
- package/src/{use-input.mjs → use-input.js} +5 -5
- package/src/use-model-event.js +2 -2
- package/src/{use-model.mjs → use-model.js} +4 -4
- package/src/{use-resize-observer.mjs → use-resize-observer.js} +1 -1
- package/src/use-router.jsx +2 -2
- package/src/{use-updated-event.mjs → use-updated-event.js} +2 -2
- package/src/{use-validation-errors.mjs → use-validation-errors.js} +3 -3
- package/src/utils/checkbox.jsx +2 -2
- package/src/{validation-error.mjs → validation-error.js} +1 -1
- package/src/{validation-errors.mjs → validation-errors.js} +1 -1
- package/src/with-current-user.jsx +1 -1
- package/src/with-model.jsx +1 -1
- package/__tests__/base-model.test.mjs +0 -71
- package/__tests__/cable-connection-pool.test.mjs +0 -227
- package/__tests__/cable-subscription-pool.test.mjs +0 -27
- package/__tests__/can-can.test.mjs +0 -34
- package/__tests__/collection.test.mjs +0 -51
- package/__tests__/custom-error.test.mjs +0 -13
- package/__tests__/model-name.test.mjs +0 -34
- package/__tests__/model-prop-type.test.mjs +0 -113
- package/__tests__/params.test.mjs +0 -40
- package/__tests__/routes-native.test.mjs +0 -104
- package/__tests__/routes.test.mjs +0 -47
- package/__tests__/serializer.test.mjs +0 -30
- package/__tests__/support/task.mjs +0 -27
- package/__tests__/support/user.mjs +0 -32
- package/index.js +0 -1
- package/jest.config.js +0 -9
- package/src/event-created.jsx +0 -12
- package/src/event-destroyed.jsx +0 -25
- package/src/event-emitter-listener.jsx +0 -10
- package/src/event-listener.jsx +0 -25
- package/src/event-updated.jsx +0 -27
- package/src/super-admin/layout/menu/menu-item/style.scss +0 -10
- package/src/use-can-can.mjs +0 -48
- package/src/with-can-can.jsx +0 -12
- package/webpack.config.js +0 -15
- /package/src/{attribute-not-loaded-error.mjs → attribute-not-loaded-error.js} +0 -0
- /package/src/base-model/{column.mjs → column.js} +0 -0
- /package/src/base-model/{scope.mjs → scope.js} +0 -0
- /package/src/{cache-key-generator.mjs → cache-key-generator.js} +0 -0
- /package/src/{channels-consumer.mjs → channels-consumer.js} +0 -0
- /package/src/{command-submit-data.mjs → command-submit-data.js} +0 -0
- /package/src/{config.mjs → config.js} +0 -0
- /package/src/{data-set-to-attributes.mjs → data-set-to-attributes.js} +0 -0
- /package/src/draggable-sort/{controller.mjs → controller.js} +0 -0
- /package/src/{error-messages.mjs → error-messages.js} +0 -0
- /package/src/{events.mjs → events.js} +0 -0
- /package/src/inputs/{auto-submit.mjs → auto-submit.js} +0 -0
- /package/src/inputs/{id-for-component.mjs → id-for-component.js} +0 -0
- /package/src/inputs/{name-for-component.mjs → name-for-component.js} +0 -0
- /package/src/{instance-of-class-name.mjs → instance-of-class-name.js} +0 -0
- /package/src/{logger.mjs → logger.js} +0 -0
- /package/src/{model-prop-type.mjs → model-prop-type.js} +0 -0
- /package/src/{money-formatter.mjs → money-formatter.js} +0 -0
- /package/src/{not-loaded-error.mjs → not-loaded-error.js} +0 -0
- /package/src/{result.mjs → result.js} +0 -0
- /package/src/{routes.mjs → routes.js} +0 -0
- /package/src/{run-last.mjs → run-last.js} +0 -0
- /package/src/{serializer.mjs → serializer.js} +0 -0
- /package/src/table/{column-identifier.mjs → column-identifier.js} +0 -0
- /package/src/table/{column-visible.mjs → column-visible.js} +0 -0
- /package/src/table/{model-callback-args.mjs → model-callback-args.js} +0 -0
- /package/src/{translated-collections-data.mjs.erb → translated-collections-data.js.erb} +0 -0
- /package/src/{url-encode.mjs → url-encode.js} +0 -0
- /package/src/{use-event-emitter.mjs → use-event-emitter.js} +0 -0
- /package/src/{use-event-listener.mjs → use-event-listener.js} +0 -0
- /package/src/{use-screen-layout.mjs → use-screen-layout.js} +0 -0
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import RoutesNative from "../src/routes-native.mjs"
|
|
2
|
-
|
|
3
|
-
const testRoutes = () => ({
|
|
4
|
-
routes: [
|
|
5
|
-
{"name": "blank", "path": "/blank", "component": "blank"},
|
|
6
|
-
|
|
7
|
-
{"name": "root", "path": "", "component": "dashboard"},
|
|
8
|
-
|
|
9
|
-
{"name": "new_drink", "path": "/drinks/new", "component": "drinks/edit"},
|
|
10
|
-
{"name": "edit_drink", "path": "/drinks/:id/edit", "component": "drinks/edit"},
|
|
11
|
-
{"name": "drink", "path": "/drinks/:id", "component": "drinks/show"},
|
|
12
|
-
{"name": "drinks", "path": "/drinks", "component": "drinks/index"}
|
|
13
|
-
]
|
|
14
|
-
})
|
|
15
|
-
const testTranslations = () => ({
|
|
16
|
-
locales: {
|
|
17
|
-
da: {
|
|
18
|
-
routes: {
|
|
19
|
-
drink: "drink",
|
|
20
|
-
edit: "rediger"
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
en: {
|
|
24
|
-
routes: {
|
|
25
|
-
drink: "drink",
|
|
26
|
-
edit: "edit"
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
})
|
|
31
|
-
|
|
32
|
-
const routesNative = ({args, currentLocale}) => {
|
|
33
|
-
const test = new RoutesNative({
|
|
34
|
-
getLocale: () => currentLocale
|
|
35
|
-
})
|
|
36
|
-
|
|
37
|
-
test.loadRouteTranslations(testTranslations())
|
|
38
|
-
test.loadRouteDefinitions(testRoutes(), args)
|
|
39
|
-
|
|
40
|
-
return test
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
describe("RoutesNative", () => {
|
|
44
|
-
it("translates routes from the current locale", () => {
|
|
45
|
-
const test = routesNative({args: {localized: true}, currentLocale: "da"})
|
|
46
|
-
const daRoute = test.editDrinkPath(5)
|
|
47
|
-
|
|
48
|
-
expect(daRoute).toEqual("/da/drinks/5/rediger")
|
|
49
|
-
})
|
|
50
|
-
|
|
51
|
-
it("translates routes from the locale-param", () => {
|
|
52
|
-
const test = routesNative({args: {localized: true}, currentLocale: "en"})
|
|
53
|
-
const daRoute = test.editDrinkPath(5, {locale: "da"})
|
|
54
|
-
|
|
55
|
-
expect(daRoute).toEqual("/da/drinks/5/rediger")
|
|
56
|
-
})
|
|
57
|
-
|
|
58
|
-
it("defaults to the locale given by the getLocale callback", () => {
|
|
59
|
-
const test = routesNative({args: {localized: true}, currentLocale: "en"})
|
|
60
|
-
const daRoute = test.editDrinkPath(5)
|
|
61
|
-
|
|
62
|
-
expect(daRoute).toEqual("/en/drinks/5/edit")
|
|
63
|
-
})
|
|
64
|
-
|
|
65
|
-
it("uses the rest of the params as a query string", () => {
|
|
66
|
-
const test = routesNative({args: {localized: true}, currentLocale: "en"})
|
|
67
|
-
const daRoute = test.editDrinkPath(5, {drink: {name: "Pina Colada"}, locale: "da"})
|
|
68
|
-
|
|
69
|
-
expect(daRoute).toEqual("/da/drinks/5/rediger?drink%5Bname%5D=Pina%20Colada")
|
|
70
|
-
})
|
|
71
|
-
|
|
72
|
-
it("translates a route without localization", () => {
|
|
73
|
-
const test = routesNative({currentLocale: "en"})
|
|
74
|
-
const daRoute = test.editDrinkPath(5, {drink: {name: "Pina Colada"}})
|
|
75
|
-
|
|
76
|
-
expect(daRoute).toEqual("/drinks/5/edit?drink%5Bname%5D=Pina%20Colada")
|
|
77
|
-
})
|
|
78
|
-
|
|
79
|
-
it("generates urls", () => {
|
|
80
|
-
if (!globalThis.location) globalThis.location = {} // eslint-disable-line jest/no-if
|
|
81
|
-
|
|
82
|
-
globalThis.location.host = "localhost"
|
|
83
|
-
globalThis.location.protocol = "http:"
|
|
84
|
-
|
|
85
|
-
const test = routesNative({args: {localized: true}, currentLocale: "en"})
|
|
86
|
-
const daRoute = test.editDrinkUrl(5, {drink: {name: "Pina Colada"}, locale: "da"})
|
|
87
|
-
|
|
88
|
-
expect(daRoute).toEqual("http://localhost/da/drinks/5/rediger?drink%5Bname%5D=Pina%20Colada")
|
|
89
|
-
})
|
|
90
|
-
|
|
91
|
-
it("generates urls with custom options", () => {
|
|
92
|
-
const test = routesNative({args: {localized: true}, currentLocale: "en"})
|
|
93
|
-
const daRoute = test.editDrinkUrl(5, {drink: {name: "Pina Colada"}, locale: "da", host: "google.com", port: 123, protocol: "https"})
|
|
94
|
-
|
|
95
|
-
expect(daRoute).toEqual("https://google.com:123/da/drinks/5/rediger?drink%5Bname%5D=Pina%20Colada")
|
|
96
|
-
})
|
|
97
|
-
|
|
98
|
-
it("generates urls without locales", () => {
|
|
99
|
-
const test = routesNative({currentLocale: "en"})
|
|
100
|
-
const daRoute = test.editDrinkUrl(5, {drink: {name: "Pina Colada"}, locale: "da", host: "google.com", port: 123, protocol: "https"})
|
|
101
|
-
|
|
102
|
-
expect(daRoute).toEqual("https://google.com:123/drinks/5/edit?drink%5Bname%5D=Pina%20Colada")
|
|
103
|
-
})
|
|
104
|
-
})
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import Routes from "../src/routes.mjs"
|
|
2
|
-
|
|
3
|
-
const testRoutes = {
|
|
4
|
-
routes: [
|
|
5
|
-
{"name": "blank", "path": "/blank", "component": "blank"},
|
|
6
|
-
|
|
7
|
-
{"name": "root", "path": "", "component": "dashboard"},
|
|
8
|
-
|
|
9
|
-
{"name": "new_drink", "path": "/drinks/new", "component": "drinks/edit"},
|
|
10
|
-
{"name": "edit_drink", "path": "/drinks/:id/edit", "component": "drinks/edit"},
|
|
11
|
-
{"name": "drink", "path": "/drinks/:id", "component": "drinks/show"},
|
|
12
|
-
{"name": "drinks", "path": "/drinks", "component": "drinks/index"}
|
|
13
|
-
]
|
|
14
|
-
}
|
|
15
|
-
const fakeJsRoutes = {
|
|
16
|
-
blankPath: () => "/blank",
|
|
17
|
-
blankUrl: () => "https://localhost/blank",
|
|
18
|
-
newDrinkPath: () => "/drinks/new",
|
|
19
|
-
newDrinkUrl: () => "/drinks/new",
|
|
20
|
-
editDrinkPath: (drinkId) => `/drinks/${drinkId}/edit`,
|
|
21
|
-
editDrinkUrl: (drinkId) => `https://localhost/drinks/${drinkId}/edit`,
|
|
22
|
-
drinkPath: (drinkId) => `/druiks/${drinkId}`,
|
|
23
|
-
drinkUrl: (drinkId) => `https://localhost/drinks/${drinkId}`,
|
|
24
|
-
drinksPath: () => "/drinks",
|
|
25
|
-
drinksUrl: () => "https://localhost/drinks",
|
|
26
|
-
rootPath: () => "/root",
|
|
27
|
-
rootUrl: () => "https://localhost"
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const routes = new Routes({
|
|
31
|
-
jsRoutes: fakeJsRoutes,
|
|
32
|
-
routeDefinitions: testRoutes
|
|
33
|
-
})
|
|
34
|
-
|
|
35
|
-
describe("Routes", () => {
|
|
36
|
-
it("generates paths", () => {
|
|
37
|
-
const daRoute = routes.editDrinkPath(5)
|
|
38
|
-
|
|
39
|
-
expect(daRoute).toEqual("/drinks/5/edit")
|
|
40
|
-
})
|
|
41
|
-
|
|
42
|
-
it("generates urls", () => {
|
|
43
|
-
const daRoute = routes.editDrinkUrl(5)
|
|
44
|
-
|
|
45
|
-
expect(daRoute).toEqual("https://localhost/drinks/5/edit")
|
|
46
|
-
})
|
|
47
|
-
})
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import Serializer from "../src/serializer.mjs"
|
|
2
|
-
import User from "./support/user.mjs"
|
|
3
|
-
|
|
4
|
-
describe("Serializer", () => {
|
|
5
|
-
test("it serializes model classes", () => {
|
|
6
|
-
const testObject = {
|
|
7
|
-
userModel: User
|
|
8
|
-
}
|
|
9
|
-
const serialized = Serializer.serialize(testObject)
|
|
10
|
-
|
|
11
|
-
expect(serialized).toEqual({userModel: {api_maker_type: "resource", name: "User"}})
|
|
12
|
-
})
|
|
13
|
-
|
|
14
|
-
test("it serializes dates", () => {
|
|
15
|
-
// Mock time zone offset
|
|
16
|
-
var getTimezoneOffset = Date.prototype.getTimezoneOffset
|
|
17
|
-
|
|
18
|
-
Date.prototype.getTimezoneOffset = function () {
|
|
19
|
-
return -120
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const date = new Date(1985, 5, 17, 10, 30, 5)
|
|
23
|
-
const serialized = Serializer.serialize(date)
|
|
24
|
-
|
|
25
|
-
// Restore time zone offset
|
|
26
|
-
Date.prototype.getTimezoneOffset = getTimezoneOffset
|
|
27
|
-
|
|
28
|
-
expect(serialized).toEqual({api_maker_type: "datetime", value: "1985-6-17 10:30:5+0200"})
|
|
29
|
-
})
|
|
30
|
-
})
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export default class Task {
|
|
2
|
-
static modelClassData () {
|
|
3
|
-
return {
|
|
4
|
-
attributes: [],
|
|
5
|
-
name: "Task"
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
static modelName () {
|
|
10
|
-
return "Task"
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
constructor ({a, b, isNewRecord = false, r} = {}) {
|
|
14
|
-
this.abilities = b
|
|
15
|
-
this._isNewRecord = isNewRecord
|
|
16
|
-
this.modelData = a
|
|
17
|
-
this.relationshipsCache = r
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
isNewRecord () {
|
|
21
|
-
return this._isNewRecord
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
isPersisted () {
|
|
25
|
-
return !this._isNewRecord
|
|
26
|
-
}
|
|
27
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import BaseModel from "../../src/base-model.mjs"
|
|
2
|
-
|
|
3
|
-
export default class User extends BaseModel {
|
|
4
|
-
static modelClassData () {
|
|
5
|
-
return {
|
|
6
|
-
attributes: [],
|
|
7
|
-
name: "User",
|
|
8
|
-
primaryKey: "id"
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
static modelName () {
|
|
13
|
-
return "User"
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
constructor ({a, b, isNewRecord = false, r}) {
|
|
17
|
-
super({a})
|
|
18
|
-
|
|
19
|
-
this.abilities = b
|
|
20
|
-
this._isNewRecord = isNewRecord
|
|
21
|
-
this.modelData = a
|
|
22
|
-
this.relationshipsCache = r
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
isNewRecord () {
|
|
26
|
-
return this._isNewRecord
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
isPersisted () {
|
|
30
|
-
return !this._isNewRecord
|
|
31
|
-
}
|
|
32
|
-
}
|
package/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
package/jest.config.js
DELETED
package/src/event-created.jsx
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import memo from "set-state-compare/src/memo"
|
|
2
|
-
import useCreatedEvent from "./use-created-event.mjs"
|
|
3
|
-
|
|
4
|
-
const ApiMakerEventCreated = memo((props) => {
|
|
5
|
-
const {modelClass, onCreated, ...restProps} = props
|
|
6
|
-
|
|
7
|
-
useCreatedEvent(modelClass, onCreated, restProps)
|
|
8
|
-
|
|
9
|
-
return null
|
|
10
|
-
})
|
|
11
|
-
|
|
12
|
-
export default ApiMakerEventCreated
|
package/src/event-destroyed.jsx
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import memo from "set-state-compare/src/memo"
|
|
2
|
-
import PropTypes from "prop-types"
|
|
3
|
-
import propTypesExact from "prop-types-exact"
|
|
4
|
-
import {shapeComponent, ShapeComponent} from "set-state-compare/src/shape-component.js"
|
|
5
|
-
import useDestroyedEvent from "./use-destroyed-event.mjs"
|
|
6
|
-
|
|
7
|
-
export default memo(shapeComponent(class ApiMakerEventDestroyed extends ShapeComponent {
|
|
8
|
-
static propTypes = propTypesExact({
|
|
9
|
-
active: PropTypes.bool,
|
|
10
|
-
debounce: PropTypes.oneOfType([
|
|
11
|
-
PropTypes.bool,
|
|
12
|
-
PropTypes.number
|
|
13
|
-
]),
|
|
14
|
-
model: PropTypes.object.isRequired,
|
|
15
|
-
onConnected: PropTypes.func,
|
|
16
|
-
onUpdated: PropTypes.func.isRequired
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
render() {
|
|
20
|
-
const {model, onDestroyed, ...restProps} = this.props
|
|
21
|
-
useDestroyedEvent(model, onDestroyed, restProps)
|
|
22
|
-
|
|
23
|
-
return null
|
|
24
|
-
}
|
|
25
|
-
}))
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import memo from "set-state-compare/src/memo"
|
|
2
|
-
import useEventEmitter from "./use-event-emitter.mjs"
|
|
3
|
-
|
|
4
|
-
const ApiMakerEventEmitterListener = ({events, event, onCalled}) => {
|
|
5
|
-
useEventEmitter(events, event, onCalled)
|
|
6
|
-
|
|
7
|
-
return null
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export default memo(ApiMakerEventEmitterListener)
|
package/src/event-listener.jsx
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import memo from "set-state-compare/src/memo"
|
|
2
|
-
import PropTypes from "prop-types"
|
|
3
|
-
import propTypesExact from "prop-types-exact"
|
|
4
|
-
import useEventListener from "./use-event-listener.mjs"
|
|
5
|
-
|
|
6
|
-
const callEvent = (target, eventName, args = []) => {
|
|
7
|
-
let event = document.createEvent("Event")
|
|
8
|
-
event.initEvent(eventName, false, true)
|
|
9
|
-
target.dispatchEvent(event, args)
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
const ApiMakerEventListener = ({event, onCalled, target}) => {
|
|
13
|
-
useEventListener(target, event, onCalled)
|
|
14
|
-
|
|
15
|
-
return null
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
ApiMakerEventListener.propTypes = propTypesExact({
|
|
19
|
-
event: PropTypes.string.isRequired,
|
|
20
|
-
onCalled: PropTypes.func.isRequired,
|
|
21
|
-
target: PropTypes.object.isRequired
|
|
22
|
-
})
|
|
23
|
-
|
|
24
|
-
export {callEvent}
|
|
25
|
-
export default memo(ApiMakerEventListener)
|
package/src/event-updated.jsx
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import BaseComponent from "./base-component"
|
|
2
|
-
import memo from "set-state-compare/src/memo"
|
|
3
|
-
import PropTypes from "prop-types"
|
|
4
|
-
import propTypesExact from "prop-types-exact"
|
|
5
|
-
import {shapeComponent} from "set-state-compare/src/shape-component.js"
|
|
6
|
-
import useUpdatedEvent from "./use-updated-event.mjs"
|
|
7
|
-
|
|
8
|
-
export default memo(shapeComponent(class ApiMakerEventUpdated extends BaseComponent {
|
|
9
|
-
static propTypes = propTypesExact({
|
|
10
|
-
active: PropTypes.bool,
|
|
11
|
-
debounce: PropTypes.oneOfType([
|
|
12
|
-
PropTypes.bool,
|
|
13
|
-
PropTypes.number
|
|
14
|
-
]),
|
|
15
|
-
model: PropTypes.object.isRequired,
|
|
16
|
-
onConnected: PropTypes.func,
|
|
17
|
-
onUpdated: PropTypes.func.isRequired
|
|
18
|
-
})
|
|
19
|
-
|
|
20
|
-
render() {
|
|
21
|
-
const {model, onUpdated, ...restProps} = this.props
|
|
22
|
-
|
|
23
|
-
useUpdatedEvent(model, onUpdated, restProps)
|
|
24
|
-
|
|
25
|
-
return null
|
|
26
|
-
}
|
|
27
|
-
}))
|
package/src/use-can-can.mjs
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import CanCan from "./can-can.mjs"
|
|
2
|
-
import {useCallback, useLayoutEffect, useMemo, useState} from "react"
|
|
3
|
-
import useCurrentUser from "./use-current-user.mjs"
|
|
4
|
-
import useShape from "set-state-compare/src/use-shape.js"
|
|
5
|
-
|
|
6
|
-
const useCanCan = (abilitiesCallback, dependencies) => {
|
|
7
|
-
const currentUser = useCurrentUser()
|
|
8
|
-
const s = useShape({abilitiesCallback})
|
|
9
|
-
|
|
10
|
-
s.useStates({
|
|
11
|
-
canCan: null
|
|
12
|
-
})
|
|
13
|
-
|
|
14
|
-
if (!dependencies) {
|
|
15
|
-
dependencies = [currentUser?.id()]
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const loadAbilities = useCallback(async () => {
|
|
19
|
-
const canCan = CanCan.current()
|
|
20
|
-
const abilities = s.p.abilitiesCallback()
|
|
21
|
-
|
|
22
|
-
await canCan.loadAbilities(abilities)
|
|
23
|
-
|
|
24
|
-
s.set({canCan})
|
|
25
|
-
}, [])
|
|
26
|
-
|
|
27
|
-
const onResetAbilities = useCallback(() => {
|
|
28
|
-
s.set({canCan: null}, {silent: true})
|
|
29
|
-
loadAbilities()
|
|
30
|
-
}, [])
|
|
31
|
-
|
|
32
|
-
useMemo(() => {
|
|
33
|
-
s.set({canCan: null}, {silent: true})
|
|
34
|
-
loadAbilities()
|
|
35
|
-
}, dependencies)
|
|
36
|
-
|
|
37
|
-
useLayoutEffect(() => {
|
|
38
|
-
CanCan.current().events.addListener("onResetAbilities", onResetAbilities)
|
|
39
|
-
|
|
40
|
-
return () => {
|
|
41
|
-
CanCan.current().events.removeListener("onResetAbilities", onResetAbilities)
|
|
42
|
-
}
|
|
43
|
-
}, [])
|
|
44
|
-
|
|
45
|
-
return s.s.canCan
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export default useCanCan
|
package/src/with-can-can.jsx
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import useCanCan from "./use-can-can.mjs"
|
|
2
|
-
import memo from "set-state-compare/src/memo"
|
|
3
|
-
|
|
4
|
-
export default (WrappedComponent, abilities) => {
|
|
5
|
-
const WithCanCan = (props) => {
|
|
6
|
-
const canCan = useCanCan(() => abilities)
|
|
7
|
-
|
|
8
|
-
return <WrappedComponent canCan={canCan} {...props} />
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
return memo(WithCanCan)
|
|
12
|
-
}
|
package/webpack.config.js
DELETED
|
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
|
|
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
|
|
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
|
|
File without changes
|